使用 LINQ 不支持的 LINQ 数组索引拆分和替换字符 C# 电子邮件时出错
Error when splitting and replacing chars C# email with LINQ Array Index not supported in LINQ
这会引发错误
'ArrayIndex' 在 LINQ to Entities 中不受支持。
那么当拆分和替换失败时,有什么替代方案呢?
from S in db.Students
where S.ID = ID
select new { S.EMAIL.Split('@')[0].Replace(".", " ,"), S.NAME };
这是学生列表,这是我目前可以添加他们的方式。
mylist.DataValueField = "email";
mylist.DataTextField = "name";
这失败了:
S.EMAIL.Split('@')[0].Replace(".", " ,")
请帮忙。
谢谢
您可以执行以下操作
var query = (from S in db.Students
where S.ID = ID
select new {
S.EMAIL,
S.NAME })
.AsEnumerable()
.Select(x => new {
EMAIL = x.EMAIL.Split('@')[0].Replace(".", " ,"),
NAME = x.NAME});
以便在 linq to objects 而不是 DB 中完成拆分和替换。
如果您希望它 运行 在 SQL 服务器上,您可以使用 IndexOf 和 Substring:
from S in db.Students
where S.ID = ID
select new
{
EMAIL = (S.EMAIL.Contains("@") ?
S.EMAIL.Substring(0, S.EMAIL.IndexOf("@")) :
S.EMAIL
).Replace(".", " ,")
, S.NAME
};
这会引发错误 'ArrayIndex' 在 LINQ to Entities 中不受支持。 那么当拆分和替换失败时,有什么替代方案呢?
from S in db.Students
where S.ID = ID
select new { S.EMAIL.Split('@')[0].Replace(".", " ,"), S.NAME };
这是学生列表,这是我目前可以添加他们的方式。
mylist.DataValueField = "email";
mylist.DataTextField = "name";
这失败了:
S.EMAIL.Split('@')[0].Replace(".", " ,")
请帮忙。
谢谢
您可以执行以下操作
var query = (from S in db.Students
where S.ID = ID
select new {
S.EMAIL,
S.NAME })
.AsEnumerable()
.Select(x => new {
EMAIL = x.EMAIL.Split('@')[0].Replace(".", " ,"),
NAME = x.NAME});
以便在 linq to objects 而不是 DB 中完成拆分和替换。
如果您希望它 运行 在 SQL 服务器上,您可以使用 IndexOf 和 Substring:
from S in db.Students
where S.ID = ID
select new
{
EMAIL = (S.EMAIL.Contains("@") ?
S.EMAIL.Substring(0, S.EMAIL.IndexOf("@")) :
S.EMAIL
).Replace(".", " ,")
, S.NAME
};