我有一个 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/