[英]Compare two list of objects in where clause of LINQ
我想使用LINQ
基於它們的屬性比較兩個對象列表。 我創建了一個對象列表,另一個列表存儲在數據庫中。 課程如下:
class A
{
int a1;
int a2;
}
class B
{
int b1;
int b2;
}
我使用條件(a1==b1 and a2==b2)
或(a1==b2 and a2==b1)
將List<A> a
與List<B> b
進行比較。 如果任何條件為真,則返回第三個List<C>
,其屬性為class A
。 以下是我使用的以下LINQ:
(from a in context.A
where b.Any(m => (m.b1 == a.a1 && m.b2 == a.a2) || (m.b1 == a.a2 && m.b2 == a.a1))
select new C
{
c1 = a.a1,
c2 = a.a2,
}).ToList();
但它拋出一個錯誤:
除Contains運算符外,本地序列不能用於查詢運算符的LINQ to SQL實現
請幫我弄清楚正確的Linq查詢。
嘗試這個:
(
from a in context.A.ToArray()
where b.Any(m => (m.b1 == a.a1 && m.b2 == a.a2) || (m.b1 == a.a2 && m.b2 == a.a1))
select new C
{
c1 = a.a1,
c2 = a.a2,
}
).ToList();
這帶來了A
本地,然后允許你使用b
也是本地的。
當然,這僅在A
足夠小以便首先在內存中完全加載時才有效。
試試這樣吧
context.A.Where(a=>b.Any(m => (m.b1 == a.a1 && m.b2 == a.a2) || (m.b1 == a.a2 && m.b2 == a.a1))).select(a=> new C{ c1 = a.a1,
c2 = a.a2});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.