首頁 >資料庫 >mysql教程 >如何在LINQ to SQL中高效率實作IN子查詢?

如何在LINQ to SQL中高效率實作IN子查詢?

Susan Sarandon
Susan Sarandon原創
2024-12-27 12:50:21305瀏覽

How to Efficiently Implement IN Subqueries in LINQ to SQL?

處理LINQ to SQL 中的IN 子查詢

在LINQ to SQL 中利用IN 子查詢是關聯資料的有效方法來自多個表。實作方法如下:

常規IN 查詢實作:

要在LINQ to SQL 中實作IN 查詢,請遵循以下語法:

var q = from t1 in table1
        let t2s = from t2 in table2
                  where <Conditions for table2>
                  select t2.KeyField
        where t2s.Contains(t1.KeyField)
        select t1;

具體範例:

讓我們重新查看範例SQL 查詢:

SELECT f.* 
FROM Foo f
WHERE f.FooId IN (
    SELECT fb.FooId
    FROM FooBar fb
    WHERE fb.BarId = 1000
)

在LINQ to SQL 中,這將轉換為:

var query = from f in db.Foo
            let fubars = from fb in db.FooBar
                          where fb.BarId == 1000
                          select fb.FooId
            where fubars.Contains(f.FooId)
            select f;

其他注意事項:

對於EXISTS查詢,您可以使用Any() 方法而不是包含():

var q = from t1 in table1
        let t2s = from t2 in table2
                  where <Conditions for table2>
                  select t2.KeyField
        where t2s.Any(t1.KeyField)
        select t1;

以上是如何在LINQ to SQL中高效率實作IN子查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn