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

Chr*_*cia 5 .net c# linq

我在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
}
Run Code Online (Sandbox Code Playgroud)

我知道如果我想检查单个表的字段中是否存在值,我可以使用以下内容:

if(db.TableA.Where(u => u.UserID == CurrentUser).Any())
{
    //snip
}
Run Code Online (Sandbox Code Playgroud)

但是我很想知道是否有办法做lambda技术,但它能满足这两个表中第一个技术的条件.

对不起任何错误或清晰,我会根据需要进行编辑.提前致谢.

tva*_*son 2

是的,您可以使用扩展方法来做到这一点。请注意,通过首先过滤每个表,您可能会得到更简洁的查询,尽管我怀疑 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()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)