簡體   English   中英

在表<>上的Lambda Where()中使用Join的任何方法?

[英]Any Way to Use a Join in a Lambda Where() on a Table<>?

我在C#中使用Linq的前幾天,我很想知道是否有更簡潔的方式來編寫以下內容。

MyEntities db = new MyEntities(ConnString);

var q = from a in db.TableA
        join b in db.TableB
        on a.SomeFieldID equals b.SomeFieldID
        where (a.UserID == CurrentUser && 
        b.MyField == Convert.ToInt32(MyDropDownList.SelectedValue))
        select new { a, b };

if(q.Any())
{
//snip
}

我知道如果我想檢查單個表的字段中是否存在值,我可以使用以下內容:

if(db.TableA.Where(u => u.UserID == CurrentUser).Any())
{
    //snip
}

但是我很想知道是否有辦法做lambda技術,但它能滿足這兩個表中第一個技術的條件。

對不起任何錯誤或清晰,我會根據需要進行編輯。 提前致謝。

是的,您可以使用擴展方法執行此操作。 請注意,您可以通過首先過濾每個表來獲得更簡潔的查詢,但我懷疑SQL Server無論如何都會以這種方式對其進行優化。

if (db.TableA.Where( a => a.UserID == CurrentUser )
      .Join( db.TableB.Where( b => b.MyField == Convert.ToInt32(MyDDL.SelectedValue) ),
             o => o.someFieldID,
             i => i.someFieldID,
             (o,i) => o )
      .Any()) {
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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