我正在尝试做一些代码,基本上说是做搜索,如果orderByLastName是按姓氏为真的顺序,如果是按名字的假顺序.
if(orderByLastName)
{
var query = from p in db.People
orderby p.LastName
select new {Name = p.FirstName + " " + p.LastName}
}
else
{
var query = from p in db.People
orderby p.FirstName
select new {Name = p.FirstName + " " + p.LastName}
}
Run Code Online (Sandbox Code Playgroud)
以上代码是我尝试完成此操作.它不起作用,因为查询不存在于if上下文之外,这显然是坏的!而且我很确定代码违反了干法原则.有人能看到更好的方式吗?谢谢.
您可以根据需要在IQueryable集合上运行尽可能多的查询,所有这些查询都将在您首次转换为IEnumerable的位置执行.
var query = db.People;
if(orderByLastName)
{
query = query.OrderBy(t=>t.LastName)
}
else
{
query = query.OrderBy(t=>t.FirstName)
}
var result = query.Select(t=> new {Name = t.FirstName + " " + t.LastName});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
642 次 |
| 最近记录: |