LINQ to Entities在结果上分割字符串

Xia*_*gua 5 c# sql linq orm entity-framework

我有一条LINQ语句,如下所示:

var playedBanDataList =
    from bannedPlayers in query
    select new PlayerBanData
    {
        Admin = bannedPlayers.Admin,
        BannedUntil = bannedPlayers.BannedUntil,
        IsPermanentBan = bannedPlayers.IsPermanentBan,
        PlayerName = bannedPlayers.PlayerName,
        Reason = bannedPlayers.Reason,
        IpAddresses = bannedPlayers.IpAddresses.Split(new [] {","}, StringSplitOptions.RemoveEmptyEntries).ToList()
    };

    return playedBanDataList.ToList();
Run Code Online (Sandbox Code Playgroud)

这将失败,因为拆分功能失败,IpAddresses因为LINQ to Entities无法将此查询转换为SQL。

这是有道理的,但是然后又有什么等效的方法可以优雅地完成此任务呢?我想到的唯一方法是在检索到的字符串上手动运行一个循环,然后将其拆分,但我想一次获得它。

juh*_*arr 5

您可以使用AsEnumerable使选择发生在内存中而不是 EF 中。

var playedBanDataList = query.AsEnumerable()
    .Select(bannedPlayers => new PlayerBanData
    {
        Admin = bannedPlayers.Admin,
        BannedUntil = bannedPlayers.BannedUntil,
        IsPermanentBan = bannedPlayers.IsPermanentBan,
        PlayerName = bannedPlayers.PlayerName,
        Reason = bannedPlayers.Reason,
        IpAddresses = bannedPlayers.IpAddresses.Split(
            new [] {","}, 
            StringSplitOptions.RemoveEmptyEntries).ToList()
    });
Run Code Online (Sandbox Code Playgroud)