我想编写一个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
答案 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;