繁体   English   中英

EF核心获取字符串作为枚举类型

[英]EF core fetch string as enum type

我在 MYSQL 数据库上运行一个大型SELECT ,其数量级为 100.000 行。 我正在获取的表有一个名为type的列,它有 4 个不同的字符串值。

|Id|Type  |MetaKey|MetaValue|
|===========================|
|01|'line'|'AKey' |AValue   |
|02|'line'|'AKey1'|AValue   |
|03|'Ship'|'AKey2'|AValue   |
|04|'Fee' |'AKey3'|AValue   |
|05|'Ship'|'AKey4'|AValue   |

目前主要的瓶颈似乎是网络传输,所以最佳情况下我想将这 4 个不同的字符串值转换为一个 int 枚举(或一些小东西),以便我保存 memory 进行传输。

我猜 MYSQL CASE允许在 SQL 中执行此操作。

EF核心可以做到这一点吗? LINQ 语法是什么样的?

重申一下 - 我希望在数据库中完成转换,而不是在 C# 客户端中完成。

编辑:抱歉 - 我很困惑,这是一个 MYSQL 数据库而不是 MSSQL 数据库。

您的查询应如下所示:

public enum MyEnum
{
    Unknown = 0,
    Line = 1,
    Ship = 2,
    Free = 3
}
var query = 
    from t in ctx.Table
    select new 
    {
        c.Id,
        c.MetaKey,
        c.MetaValue,
        Type = (MyEnum)(
            c.Type == "line" ? 1 :
            c.Type == "Ship" ? 2 :
            c.Type == "Fee" ? 3 : 0)
    };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM