gpt4 book ai didi

c# - 如何按自定义顺序订购实体列表?

转载 作者:太空狗 更新时间:2023-10-29 20:27:19 25 4
gpt4 key购买 nike

我有一个可以这样表示的实体列表:

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)我需要按类型但使用自定义顺序(例如 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。您能否告诉我如何使用自定义订单按类型订购这些实体?

最佳答案

I don't understand this error

这是因为LINQ TO SQL无法将Dictionary的Int32 get_Item(System.String)翻译成SQL中的等价操作。


解决它的一个非常简单的方法是通过 AsEnumerable() 将实体放入内存中:

return db.MyEntity.AsEnumerable().
.OrderBy(x => orderType[x.Type])
.ToList();

关于c# - 如何按自定义顺序订购实体列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29430036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com