如何编写LINQ satament中的Select子句以选择列别名,以便我可以对它们进行排序基本上我想在LINQ中完成这个SQL语句:
select
type_id as id,
type_desc as description
from
dbo.equip_type_avt
order by
description
如何在LINQ语句的.Select子句中替换 ????? ?
public IQueryable<equip_type_avt> GetGridEquipmentTypes(string sidx, string sord)
{
try
{
return
ulsDB.equip_type_avts
.Select(?????)
.OrderBy(sidx + " " + sord);
}
catch (Exception ex)
{
string strErr = ex.Message;
return null;
}
}
答案 0 :(得分:3)
您可以使用匿名类型:
table.Select(x => new
{
ID = x.type_id,
Description = x.type_desc
});
但是,你无法访问声明它的范围之外的匿名类型的属性(无论如何没有反射或其他脏的hackery)所以如果你想在该函数之外使用结果,你只需要创建一个使用类型初始值设定项在查询中创建它的实例:
public class Foobar
{
public int ID { get; set; }
public string Description { get; set; }
}
...
table.Select(x => new Foobar() // Note the difference here
{
ID = x.type_id,
Description = x.type_desc
});
问题:如果要以不同的方式命名列,为什么不在声明列属性映射的位置更改它?在LINQ-to-SQL中,您可以根据需要为数据库列命名,但为属性指定名称“ID”或“描述”。
答案 1 :(得分:1)
我不确定我理解你的问题,sidx和sord与你的查询有什么关系?
不是你的问题,而是你必须用OrderBy(...)结束你的查询。然后是(...)而不是组合的OrderBy?
答案 2 :(得分:0)
如果您想以简单的方式按字符串排序,请下载Dynamic LINQ库。
然而,这是2000行代码,其中大部分代码完全是冗余的,仅用于排序。
自己动手不应该太,但需要对表达树有一点了解。我不能真的帮助你。
编辑:我添加了另一个答案,希望能回答你的实际问题:)