在这种情况下创建一个新的匿名对象可能会看起来更像是这样的:
select new { FullName = ofg.FirstName + ofg.Surname, ContactID = ofg.ContactID }
注然后这是行不通的:
OrderBy(ofg => ofg.FirstName)
因为对象中没有FirstName
字段。 (仅FullName
和ContactID
)。如果您需要通过现场订购,你需要选择它:
select new { FirstName = ofg.FirstName, FullName = ofg.FirstName + ofg.Surname, ContactID = ofg.ContactID }
您也可能会发现在这个逻辑,你的FullName
字段没有名称之间加空格。如果你想要的话,你需要把它包含在逻辑中。
作为一个附注,像FullName
这样的字段通常是实际模型而不是匿名对象的好例子。考虑这样的事情:
public class SomeModel
{
public string FirstName { get; set; }
public string Surname { get; set; }
public int ContactID { get; set; }
public string FullName
{
get
{
return string.Format("{0} {1}", FirstName, Surname);
}
}
}
这将封装它所属的对象上的FullName
逻辑,你可以只选择对象的一个实例:
select new SomeModel { FirstName = ofg.FirstName, Surname = ofg.Surname, ContactID = ofg.ContactID }
这样耗时的代码将无法必须复制创建模型的逻辑,模型本身包含它拥有的逻辑。然后,您可以继续添加更多功能,集中到一个模型。
你的例子工作吗?如果不是什么例外,你会得到什么?为什么在数据库中这样做,而不是通过代码? – ChrFin 2014-12-01 15:27:40