LINQ to Entities在结果上分割字符串 [英] LINQ to Entities split string on result
本文介绍了LINQ to Entities在结果上分割字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一条LINQ语句,如下所示:
I have a LINQ statement as follows:
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.
This fails because split function fails on IpAddresses
as LINQ to Entities cannot translate this query to SQL.
这是有道理的,但是,优雅地实现这一目标的等效方法是什么?我想到的唯一方法是在检索到的字符串上手动运行一个循环,然后将其拆分,但我想一次性获得它.
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.
推荐答案
您可以使用AsEnumerable
使选择发生在内存中,而不是EF.
You can use AsEnumerable
to make the select occur in memory instead of 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()
});
这篇关于LINQ to Entities在结果上分割字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文