C# 查询需要从Result1列表返回Result2中不存在的所有项 public List GetEsEmails{get;set;}

C# 查询需要从Result1列表返回Result2中不存在的所有项 public List GetEsEmails{get;set;},c#,list,C#,List,你好: 我的查询需要返回splitted1列表中GetEsEmails中不存在EmailID的所有项目 请你帮我学语法好吗 public List<Model_Result> GetEsEmails { get; set; } public void sendmail(字符串电子邮件) { //拆分电子邮件字符串 var splitted1=esmails.Emails.Split(新字符串[]{System.Environment.NewLine},StringSplitOpti

你好:

我的查询需要返回splitted1列表中GetEsEmails中不存在EmailID的所有项目

请你帮我学语法好吗

public List<Model_Result> GetEsEmails { get; set; }
public void sendmail(字符串电子邮件)
{
//拆分电子邮件字符串
var splitted1=esmails.Emails.Split(新字符串[]{System.Environment.NewLine},StringSplitOptions.RemoveEmptyEntries)。选择(s=>s.Replace(“;”,”);
List myList=新列表();
var result1=splitted1
.Where(x=>GetEsEmails.All(email=>x!=email.EmailAddress))
.ToList();
}

谢谢,,
urpalshu

如果我理解正确,您可能希望这样做: “我想要splitted1中的x字符串,对于这些字符串,GetEsEmails不包含a.Email等于x的任何a元素”


林克。我爱林克?你不喜欢林克吗?除了,Linq有
<代码>除了
很有趣

    var result1 = splitted1
              .Where(x => !GetEsEmails.Any(a=>a.Email==x))
              .ToList();

请注意第一行,它仅将
EmailAddress
属性提取到
IEnumerable
中。然后第二行返回一个新的
IEnumerable
,它只包含
splitted1
中不在
addressesToIgnore
中的成员

对不起,我弄错了,你的linq也没什么问题(我盲目地认为那是不好的事情,并写下了我脑海中的第一件事)。但它可能是与你的分裂1。一行可以包含一个单独的?因为如果你的esmail字符串像我想的那样:xx@xxx.xx;\nzzz@zzz.zz\n“那么您可能需要替换-在原始字符串中,而不是在已拆分的字符串数组中。
    var result1 = splitted1
              .Where(x => !GetEsEmails.Any(a=>a.Email==x))
              .ToList();
var addressesToIgnore = GetEsEmails.Select(email => email.EmailAddress);
var results = splitted1.Except(addressesToIgnore );