我正在尝试做一些基本上说要搜索的代码,如果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}
}
上面的代码是我为实现这一目标所做的尝试。它不起作用,因为查询在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});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句