2016-03-03 59 views
0

我有問題,用一個單一的查詢,我試圖把對象(opList)的列表,並提取每個對象的2 UID的創建另一個查詢鮮明的列表。的LINQ從一個列表中選擇多個領域明顯

DataContext.Where(x => opList.Select(y => y.UIDFirst) 
          .Union(opList.Select(o => o.UIDSecond)).ToList() 
          .Contains(x.uid)).ToList(); 

而每個選擇的自己的工作,並結合工程加入名單的唯一列表(imediates窗口測試)拋出一個異常時處理語句作爲一個整體。

對我做錯了什麼任何想法;

{"Unable to create a constant value of type 'DataContext.Class.Operation'. Only primitive types or enumeration types are supported in this context."} 
+0

我仍然感到困惑:是'DataContext.Where'正確嗎?你不應該叫'Where'在那個'DataContext'一些表?我認爲EF不支持''這條Where'裏面ToList',但我不會太EF經歷。 –

回答

0

這應該工作:

var uids = opList.Select(o => o.UIDFirst) 
       .Concat(opList.Select(o => o.UIDSecond) 
       .ToList(); 

var result = DataContext.Where(dc => uids.Contains(x.uid)).ToList(); 
0

你必須直接調用包含在DataContext的一定DbSet你的說法,而不是在DataContext。

DatContext.SomeDbSet.Where(x => /* ... */);