【问题标题】:Conditional LINQ where statement?条件 LINQ where 语句?
【发布时间】:2009-06-03 14:30:05
【问题描述】:

我有一个 linq 语句,如果下拉索引不为 0,我想添加一个额外的 where 子句。

people.Where(n.surname == "surname" || n.forename == "forename" && (dropdown.SelectedIndex > 0) ? n.id = dropdown.SelectedValue : n.id  > 0).Select(n => n);

我什至不确定我正在尝试的事情是否可行??

我想这样做,而不必编写两个不同的语句。

有什么想法吗?

谢谢

【问题讨论】:

    标签: c# .net linq lambda


    【解决方案1】:

    幸运的是,这很容易,因为查询组成:

    var query = people.Where(n.surname == "surname" || n.forename == "forename");
    if (dropdown.SelectedIndex > 0)
    {
        query = query.Where(n => n.id.ToString() == dropdown.SelectedValue);
    }
    

    【讨论】:

    • 看起来 id 是一个整数,但 SelectedValue 属性是一个字符串。需要转换其中之一。
    • 收到错误“无法从我的 if 语句 query = query 中的用法错误推断??
    • 我需要参数 where query = query.Where(n => n.id == dropdown.SelectedValue);谢谢大家
    • 你不喜欢这个功能吗?这就像动态 SQL,但没有那么邪恶 :)
    • (修复了答案中的两个错误。很想知道反对票的用途。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2022-01-14
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    相关资源
    最近更新 更多