如何通过linq中的派生属性对sql进行排序?

时间:2011-03-24 01:25:28

标签: c# asp.net linq-to-sql

我有一个名为Total的属性,它是从我的数据对象上的其他值派生的。当我尝试在linq to sql中的order by语句中使用此属性时,我得到:成员'...'没有支持的SQL转换。这是有道理的,但有没有解决这种情况?谢谢!

1 个答案:

答案 0 :(得分:2)

您可以调用查询,而不是执行OrderBy()子句。

var items = context.Tables.ToList().OrderBy(x=>x.Total);

您可以这样做,因为在您调用.ToList()之后,您将使用linq来对象。

正如Broken所提到的,这可能并不适用于所有情况,另一种可能的解决方案是在.Select()

中重现您的总计算量

注意 ,我的语法可能有些偏差,没有VS和我:)

var items = context.Tables.Select(t=> new {t.Item1, Total=(t.Price + t.Tax)})
                          .OrderBy(t=>t.Total);

现在获准使用此类投影,您不会再使用Table了,但可能是一个选项。