gpt4 book ai didi

c# - 在 Table<> 上的 Lambda Where() 中使用联接的任何方法?

转载 作者:太空狗 更新时间:2023-10-29 23:42:26 24 4
gpt4 key购买 nike

我刚开始在 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 技术,但它会在这两个表中满足第一种技术的条件。

对于任何错误或清晰度,我深表歉意,我会根据需要进行编辑。提前致谢。

最佳答案

是的,你可以用 extension 做到这一点方法。请注意,您可能会通过首先过滤每个表来获得更简洁的查询,但我怀疑 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()) {
...
}

关于c# - 在 Table<> 上的 Lambda Where() 中使用联接的任何方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com