2010-04-15 75 views
2

我想获得所有的资产,其中Class属性等于selectedIClassesList中的一个值;帮我Linq查询请

事情是这样的:

from x in Assets where selectedIClassesList.Contains(x.Class) select x 
+0

这听起来像你需要给我们多一点你的问题上下文。你正在使用LINQ to Objects,LINQ to SQL,LINQ to Entities等吗?你的资产类是什么样的? Assets.Class的类型是什么样的? IClassesList接口是什么样的? – StriplingWarrior 2010-04-15 17:37:23

回答

3

你可以做一个加入...

var query = from a in Assets 
      join s in selectedClassesList on a.Class equals s 
      select a; 
+0

+1击败我! – 2010-04-15 16:01:22

2
Assets.Where(x=>selectedIClassesList.Contains(x.Class)); 
0

如果我理解正确的,你的问题是,IClassesList没有包含方法?如果IClassesList是与x.Class相同类型的对象的IEnumerable,这应该工作。

from x in Assets where selectedIClassesList.Any(s => s == x.Class) select x 

为了获得更好的性能,您尽可能创建一本字典。

var selectedClassesDict = selectedIClassesList.ToDictionary(s => s); 
var selectedAssets = from a in Assets 
        where selectedClassesDict.ContainsKey(a.Class) 
        select a; 
+0

无法创建类型为'封闭类型'的常量值。在此上下文中仅支持基本类型(如Int32,String和Guid)。 – Agzam 2010-04-15 16:28:58