Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在linq to sql中按派生属性排序?_C#_Asp.net_Linq To Sql - Fatal编程技术网

C# 如何在linq to sql中按派生属性排序?

C# 如何在linq to sql中按派生属性排序?,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,我有一个名为Total的属性,它是从数据对象上的其他值派生的。当我尝试在linq to sql中的order by语句中使用此属性时,我得到:成员“…”不支持转换为sql。这是有道理的,但这种情况下有解决办法吗?谢谢 您可以调用查询,然后调用OrderBy()子句 var items = context.Tables.ToList().OrderBy(x=>x.Total); 您可以这样做,因为在调用.ToList()之后,您将使用linq访问对象 正如Break提到的,这可能不适用于所

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

您可以调用查询,然后调用
OrderBy()
子句

var items = context.Tables.ToList().OrderBy(x=>x.Total);
您可以这样做,因为在调用
.ToList()
之后,您将使用linq访问对象

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

注意,我的语法可能有点错误,不要随身携带VS
:)


现在有了这种类型的投影,你将不再得到一个
,而可能是一个选项。

你所说的“派生”到底是什么意思-该属性是否是您模型的一部分?@Break:我相信他的意思是,它是一个使用其模型中的其他属性生成值的属性。它位于用于合计其他一些属性的分部类中。如果查询包括,例如
Skip()
Take()
,则这可能不是一个选项,否则,您必须从数据库中提取所有记录+因为我想不出更好的了。另外,
AsEnumerable()
将是更轻量级的方法。
var items = context.Tables.Select(t=> new {t.Item1, Total=(t.Price + t.Tax)})
                          .OrderBy(t=>t.Total);