C# Linq查询中的If语句

C# Linq查询中的If语句,c#,asp.net,sql,linq,C#,Asp.net,Sql,Linq,我试图对dropdownlist进行排序,仅当选择了特定id时,它在数据库中的输入方式才准确。否则我希望它们按升序排序。我不知道如何添加在选择特定Id时不排序列表的最后一个组件。到目前为止,我的情况如下: var items = (from p in _db.Funds where p.DesignationId == id orderby p.Name ascending

我试图对dropdownlist进行排序,仅当选择了特定id时,它在数据库中的输入方式才准确。否则我希望它们按升序排序。我不知道如何添加在选择特定Id时不排序列表的最后一个组件。到目前为止,我的情况如下:

var items = (from p in _db.Funds
                     where p.DesignationId == id
                     orderby p.Name ascending 
                     select new { p.id, p.Name });
        return items;

你是说像这样的

var items = 
    (from p in _db.Funds
     where p.DesignationId == id
     select new { p.id, p.Name });
if (id != "some id")
{
    items = items.OrderBy(p => p.Name);
}

return items.ToList();
这将是一个解决办法

var items = (from p in _db.Funds
                 where p.DesignationId == id
                 orderby p.id == "the id" ? p.Name : null 
                 select new { p.id, p.Name });
return items;

您所说的“如何准确地输入数据库”是什么意思?除非指定了排序,否则应该将数据库表中的行视为无序method to execute your query.p.DesignationId是我希望它基于的Id。这很有效,但如果您事先确定了排序,并将其设置为
orderby
是LINQ to SQL查询的一部分,而不是之后执行的LINQ to Objects查询,它的性能会更好吗?@evanmcdonnal排序将作为Linq到SQL/-Entities查询,所以。。。如果选择了否
id
,则显示无序的所有内容;如果选择了一些
id
,只需按
Name
顺序显示这些项目即可。是这样吗?