简体   繁体   English

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

[英]LINQ to Entities split string on result

I have a LINQ statement as follows: 我有一个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();

This fails because split function fails on IpAddresses as LINQ to Entities cannot translate this query to SQL. 由于LINQ to Entities无法将此查询转换为SQL,因此拆分函数在IpAddresses上失败,因此失败。

This makes sense, but then what's an equivalent way of accomplishing this elegantly? 这是有道理的,但那么优雅地实现这一点的方法是什么? The only way I've thought of is to manually run a loop on the retrieved string then splitting it, but I'd like to get it in one go. 我想到的唯一方法是在检索到的字符串上手动运行循环,然后拆分它,但我想一次性完成它。

You can use AsEnumerable to make the select occur in memory instead of EF. 您可以使用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()
    });

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

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