我有一个可以这样表示的实体列表:
Type | Property A | Property B | ...
--------------------------------------
A | ABC | 123 | ...
A | ABC | 123 | ...
D | ABC | 123 | ...
D | ABC | 123 | ...
B | ABC | 123 | ...
C | ABC | 123 | ...
Type是一个字符串,只能是4个不同的值之一(例如A,B,C,D)。我需要按Type(但具有自定义顺序)(例如A,D,B,C)对这些实体进行排序。
我尝试过这样的事情:
var orderType = new Dictionary<string, int>() {
{ "A", 0 },
{ "D", 1 },
{ "B", 2 },
{ "C", 3 }
};
return db.MyEntity
.OrderBy(x => orderType[x.Type])
.ToList();
但是我收到以下错误:
LINQ to Entities无法识别方法'Int32 get_Item(System.String)'方法,并且该方法无法转换为商店表达式。
我不了解此错误,也不知道如何处理此OrderBy。您能否告诉我如何使用自定义订单按类型订购这些实体?
我不明白这个错误
这是因为LINQ TO SQL无法将Int32 get_Item(System.String)
Dictionary转换为SQL中的等效操作。
解决此问题的一种非常简单的方法是通过以下方式将实体带入内存AsEnumerable()
:
return db.MyEntity.AsEnumerable().
.OrderBy(x => orderType[x.Type])
.ToList();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句