c# - LINQ to Entities 根据结果拆分字符串

标签 c# sql entity-framework linq orm

我有一个 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();

这会失败,因为拆分函数在 IpAddresses 上失败,因为 LINQ to Entities 无法将此查询转换为 SQL。

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

最佳答案

您可以使用 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()
    });

关于c# - LINQ to Entities 根据结果拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42603070/

相关文章:

winforms - C# Windows 窗体 ComboBox 的 SelectionChangeComfilled 事件在 Combobox 的 BindingSource 属性发生更改时阻止选择更改

entity-framework - 如何在 DB first 方法中为实体设置创建日期和修改日期

c# - 机器人无法连接到公会

c# - XNA Keyboard.GetState() 不返回所有按下的键

Java SQLite : no such column error

mysql - 最后添加到表 SQL 中

c# - EntityFramework .Take() 随着时间的推移性能下降

c# - dotnet 构建应用程序部署

c# - if 语句, bool 值

sql - 如何在 SQL 中查找给定文章的评论数和评论数..?