关于Any()的简单LINQ问题

时间:2011-02-03 20:05:08

标签: linq

我想编写一个linq查询来执行此操作

Select id from selectedBrands 
where name='Nick' or name='Matt'

这个linq是否正确????

  var brandsToNotShow=new[] {"Nick","Matt"};
    model.Names=

                    (from s in selectedBrands
                    where  brandsToNotShow.Any()
                    select s.Brand.name
                ).ToList();

其中model.Names是List

3 个答案:

答案 0 :(得分:5)

不,这不正确。

brandsNotToShow.Any() 

问“这个列表中是否有任何元素”,答案是肯定的,有两个要素。

此查询可能更符合您的要求:

 from s in selectedBrands
 where brandsNotToShow.Contains(s.Brand.Name)
 select s.Brand.Name

(实际上,如果显示品牌,则可能是

where !brandsNotToShow.Contains(s.Brand.Name)

我无法从你的例子中说出来)

答案 1 :(得分:1)

根据MSDN Any():

  

确定是否有任何元素   序列满足条件。

因此,在您的示例Any中,只需查看brandsToNotSHow中是否有任何商品。

你可能想要这样的东西:

from s in selectedBrands
where brantsToNotShow.Contains (s.Brand.Name)
SELECT s.Brand.Name

答案 2 :(得分:1)

根据您选择的变量名称很难说出您想要的内容,但SQL的文字LINQ版本是

from brand in selectedBrands
where brand.name == 'Nick' || brand.name == 'Matt'
select brand.id;

如果您的代码中有数组或序列,则可以使用Contains

from brand in selectedBrands
where nameSequence.Contains(brand.name)
select brand.id;

但如果该序列大小合适,最好只加入序列。

from brand in selectedBrands
join name in nameSequence on brand.name equals name
select brand.id;