Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq查看电子邮件类_C#_Linq_List - Fatal编程技术网

C# 使用Linq查看电子邮件类

C# 使用Linq查看电子邮件类,c#,linq,list,C#,Linq,List,具有以下类别: [Serializable] public class EmailClass { public string from; public List<string> To; public List<string> CC; public string DisplayTo; public string Subject { get; set; } public int attachments; pu

具有以下类别:

[Serializable]
public class EmailClass
{
    public string from;
    public List<string> To;
    public List<string> CC;
    public string DisplayTo;
    public string Subject { get; set; }
    public int attachments;      
    public List<string> attachmentsName;
    public string DateTimeReceived;
    public string DateTimeSent;
    public string FinalFilename;
    public string DatetimeCreated;
    public string ExchangeUniqueId;
    public string ChankeyID;
    public string  FinalFileName {get;set;}
    public bool Encrypted;
    public string Descripcion { get; set; }

}
还有别的办法吗?。也许是另一个性能最好的?。会是什么
在一个字符串变量和几个列表变量内部搜索的最佳方法。

我宁愿这样做

listado.Where(
               l =>
               l.from.Equals(textbox1.Text, StringComparison.OrdinalIgnoreCase) ||
               l.To.Any((c) => c.Equals(textBox1.Text, StringComparison.OrdinalIgnoreCase) ||
               l.CC.Any((s) => s.Equals(textBox1.Text, StringComparison.OrdinalIgnoreCase)
             ))).ToList();
StringComparison.OrdinalIgnoreCase
在比较时将忽略大小写,因此您不需要使用ToUpper。您的错误与<代码>包含使用字符串中的包含(不<代码>清单>代码>)当您考虑邮件时失败:

abc@mail.com
aabc@mail.com
->aabc@mail.com包含abc@mail.com,当使用
string.Equals时,它将根据需要返回false

编辑:

一艘班轮:

listado.Where(x => 
                new List<string>{ x.from }.Union(x.To)
                      .Union(x.CC)
                      .Any(y => y.Equals(textbox1.Text, 
                                         StringComparison.OrdinalIgnoreCase)));
listado.Where(x=>
新列表{x.from}.Union(x.To)
.工会(x.CC)
.Any(y=>y.Equals)(textbox1.Text,
正常木素矿酶);

<代码>使用比较中的包含是一个坏主意,考虑这两个邮件:<代码>abc@mail.com
aabc@mail.com
最好先准备好textBox1.Text.ToUpper()并将其存储在局部变量中。别忘了,每次都会创建一个新字符串。这一行行可以工作吗?因为
from
是一个字符串(
IEnumerable
),而
To
&&
CC
列表
。那么,这个联合是否可以工作呢?错误CS1929:实例参数:无法从'string'转换为'System.Linq.IQueryable',当然不会错过,我想(不知道为什么,这是一个
列表()
)。更正,谢谢
listado.Where(x => 
                new List<string>{ x.from }.Union(x.To)
                      .Union(x.CC)
                      .Any(y => y.Equals(textbox1.Text, 
                                         StringComparison.OrdinalIgnoreCase)));