簡體   English   中英

比較LINQ的where子句中的兩個對象列表

[英]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> aList<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM