c# - 带有复选框 where 条件组合的 linq to sql 查询

标签 c# linq

如果选中了 chkAus 复选框:

if (chkAus.Checked)
                {
                    vAdvanceSearchResults  = (from t in vAdvanceSearchResults
                                    join imp in _bDataContext.Imprints on t.ImprintID equals imp.ID
                                    join cc in _bDataContext.CountryCodes on imp.CountryID equals cc.ID
                                    where cc.Code.Contains("AU")
                                    select t).Distinct();**
                }

如果检查了 chkAus 和 chkNz

if (chkNz.Checked && chkAus.Checked)
            {
                vAdvanceSearchResults = (from t in vAdvanceSearchResults
                                join imp in _bDataContext.Imprints on t.ImprintID equals imp.ID
                                join cc in _bDataContext.CountryCodes on imp.CountryID equals cc.ID
                                where cc.Code.Contains("AU") || cc.Code.Contains("NZ")
                                select t).Distinct();
            }

当选中复选框时,linq 查询的条件会发生变化。

where cc.Code.Contains("AU") || cc.Code.Contains("NZ")

我有近 10 个复选框,但不知道如何编写这么多条件。 请提供任何帮助。

例如,如果有 chkUS : 那么与 chkAus,chkNz,chkUS 复选框的组合 linq 查询将会改变。

where cc.Code.Contains("AU") || cc.Code.Contains("NZ") || cc.Code.Contains("US")

最佳答案

将它们全部放入列表中,然后执行 if list.contains(cc.Code)

var a = new List<string>(){"AU","NZ","US"};
var linq =  (from t in vAdvanceSearchResults
                                join imp in _bDataContext.Imprints on t.ImprintID equals imp.ID
                                join cc in _bDataContext.CountryCodes on imp.CountryID equals cc.ID
                                where a.Contains(cc.Code)
                                select t).Distinct();

关于c# - 带有复选框 where 条件组合的 linq to sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30250397/

相关文章:

c# - 如何从json对象中获取key并转换为数组?

c# - HttpWebRequest 调用页面两次

c# - "The SMTP host was not specified."- 但它是指定的?

c# - Linq orderby 文化(丹麦语,æøå)

c# - 如何从 C# linq 查询中的表中选择最大日期

C# WinForms : Should I use a web browser control

c# - 如何开始使用 memcached

LINQ to Entities 无法识别方法 'System.DateTime AddSeconds(Double)' 方法,且此方法无法转换为

c# - 为什么要在 C# 中定义一个局部函数只是为了立即调用它(在 IEnumerable<T> 的上下文中)

linq - VS 2010和VS 2012中的不同LINQ答案