c# - 如果 ID=0,则在 .WHERE lambda 查询中忽略

标签 c# asp.net linq

我有 2 个重载方法,因为参数 SecondVar 有时可用,有时不可用:-

private void DoSomething(int FirstVar)
{
    int SecondVar = 0;
    DoSomething(FirstVar, SecondVar);
}

private void DoSomething(int FirstVar, int SecondVar)
{
    DoSomething(FirstVar, SecondVar);

    if(SecondVar > 0)
    {
       var a = GetList().Where(x=>x.FirstId == FirstVar && x.SecondId == SecondVar);
    }
    else
    {
       var a = GetList().Where(x=>x.FirstId == FirstVar);
    }

}

是否可以在第二个 Overloaded DoSomething 中去掉 If 子句?

感谢您的帮助和时间

最佳答案

private void DoSomething(int FirstVar, int SecondVar)
{
    // DoSomething(FirstVar, SecondVar);
    var a = GetList().Where(x=>x.FirstId == FirstVar && (SecondVar == 0 || x.SecondId == SecondVar));    
}

感谢您的编辑 - 你是对的 - op 清楚地说“当第二个 var 为 0 时,则忽略”。因此,添加一个可选的可为 null 的参数只是偏离基础。

关于c# - 如果 ID=0,则在 .WHERE lambda 查询中忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16858803/

相关文章:

c# - 无法 checkin ASP .Net 5 项目,因为它缺少 global.asax

c# - Linq 聚合对象和列表

linq - Entity Framework LINQ 查询开始超时 - 数据库服务器重启后再次加速

c# - 使用 Actvator.CreateInstance 创建具有私有(private)构造函数的类的对象?

c# - 上下文切换死锁

c# - 停止 HSTS HTTPS 执行

c# - ASP.NET Core 3.0 中发生错误请求错误时显示错误属性

c# - Asp.NET 如何处理多个请求

c# - 从后面的代码检测我的页面是否在框架中

c# - Linq Orderby 与 SQL Orderby