c# - Linq 表达式中的条件

标签 c# sql linq linq-to-sql linq-to-entities

我有一个连接两个表的 LINQ 表达式。我想有条件地检查另一个 bool 值:(下面 ********* 之间的通知文本)

bool status = testfunc();

var List = 
    from t in Houses
    join k in Tbl_HouseOwner on t.HouseCode equals k.HouseCode
    where k.ReqCode== t.ReqCode 
    *********** if (status) { where k.Name.Contains(Name) } **********
    select new
    {
        ...
        name = k.Name,
        ...
    };

最佳答案

您可以使用status 来屏蔽条件,如下所示:

where k.ReqCode == t.ReqCode && (!status || k.Name.Contains(Name))

如果statusfalse,OR ||会立即成功,AND &&会为真(假设我们必须评估 OR ||,AND && 的左侧必须为真)。另一方面,如果 statustrue,则需要评估 k.Name.Contains(Name) 才能完成评估条件。

关于c# - Linq 表达式中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11406463/

相关文章:

asp.net - LINQ 问题 : FK-Table not set correctly

c# - 使用 Contains 搜索部分 linq 文本

sql - 将两个 SQL 查询的结果组合到一个表中但不使用联合

sql - 在 SQL 中替换为通配符

c# - iTextSharp 5.5.6.0 错误?复选框刻度线更改

c# - 将部分填充的 DTO 映射到域对象

mysql - 循环遍历列并分配 0/1 MySQL

c# - 在 LINQ 中按百分比分组

c# - WCF 的 ClientBase<TChannel> 在 Disposed 时如何处理 TCP 连接?

c# 无法打开文件进行读取