【发布时间】:2017-03-02 12:59:45
【问题描述】:
在进行基本 LINQ 查询时,您可以稍后使用 lambda 表达式添加 where 子句,如下所示:query.Where(c => (init.Contains(c.user)));。
我的问题是我需要在基本 LINQ 查询中使用 join 的查询上添加两个 where 子句。
我正在尝试用添加的 lambda 表达式替换旧的基本 LINQ 查询,以防止重复代码。
这是我的代码;
var query = from c in db.Clgcom
join u in db.Dvusr
on c.Comaut equals u.Gitusr
// && (initialen.Contains(c.Tstusr) // <-- query.Where(c => (initialen.Contains(c.Tstusr)));
// This is what im trying to replace// ^^ This works because its in the same table
// || initialen.Contains(u.Clgusr)) // <-- What do i type when i want to include both these conditions?
&& (c.Modid.StartsWith("C")
|| c.Modid.StartsWith("M"))
select c;
if(filter != null){
query = query.Where(c => (initialen.Contains(c.Tstusr)
|| initialen.Contains(u.Clgusr)));
// This doesn't work
}
有没有办法使用 lambda 表达式来实现在我的 where 子句中添加这两个条件?
或者我应该使用 lambda 表达式替换所有基本的 LINQ 查询吗?
【问题讨论】:
-
唯一应该在连接中的部分是
c.Comaut equals u.Gitusr。无论如何,其余的都应该在哪里。如果c.Comaut和u.Gitusr之间存在外键关系,您也可以使用导航属性