2010-04-15 70 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