使用 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 
};