具有以下类:展望电子邮件类使用LINQ
[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; }
}
一旦对象被反序列化,我寻找到所有的邮件地址的容器。 林创建搜索筛选器正在调查from
地址,列表To
收集, 和列表CC
收集。
所以最后我的LINQ查询是这样的:
listaCorreos.DataSource =
listado.Where(
l => l.from.ToUpper().Contains(textBox1.Text.ToUpper()) ||
l.To.Any((c) => c.ToUpper().Contains(textBox1.Text.ToUpper()) ||
l.CC.Any((s) => s.ToUpper().Contains(textBox1.Text.ToUpper())
)))
.ToList();
是做任何其他方式?也许另一个表现最好的?什么是 搜索一个字符串变量和几个List变量的最佳方法。
使用含有比较是一个糟糕的主意,认为这两封邮件:'ABC @ mail.com'和'AABC @ mail.com' < - 包含将比较为真 – wudzik
您最好做的第一件事是事先准备* textBox1.Text.ToUpper()*并将其存储在局部变量中。不要忘记每次都会创建一个新的字符串。 – galenus