C# 条件LINQ where语句?

C# 条件LINQ where语句?,c#,.net,linq,lambda,C#,.net,Linq,Lambda,我有一个linq语句,如果下拉索引不是0,我想添加一个额外的where子句 people.Where(n.surname == "surname" || n.forename == "forename" && (dropdown.SelectedIndex > 0) ? n.id = dropdown.SelectedValue : n.id > 0).Select(n => n); 我甚至不确定我所尝试的是否可行 我想这样做,而不是写两个不同的声明 有什么

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

people.Where(n.surname == "surname" || n.forename == "forename" && (dropdown.SelectedIndex > 0) ? n.id = dropdown.SelectedValue : n.id  > 0).Select(n => n);
我甚至不确定我所尝试的是否可行

我想这样做,而不是写两个不同的声明

有什么想法吗


谢谢

幸运的是,这很容易,因为查询包括:

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);谢谢guysDon您不喜欢这个功能吗?它类似于动态SQL,但邪恶程度较低:)(修正了答案中的两个错误。我很想知道否决票是为了什么。)