我有以下可序列化类:
[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; }
}
我有一个列表,我想用linq查询它:
var query = from p in listado
where p.from.ToString().ToUpper() == textBox1.Text
问题是它将
p.from
识别为来自标识符的linq,因此不接受。
错误:表达式项“from”无效
我无法更改类公共字符串“from”,因为它正在反序列化
存储在硬盘中的XML对象。
我怎样才能解决这个问题?
我知道我可以用list.findall之类的,但我真的会
想知道我能不能用linq。
最佳答案
David Arno演示了如何通过@from
避免与关键字冲突,但是:
我无法更改类公共字符串“from”,因为它正在反序列化存储在硬盘中的xml对象。
作为另一种方法:
[XmlElement("from")]
public string From {get;set;}
这将告诉
XmlSerializer
如何映射名称;然后您可以使用:var query = from p in listado
where p.From.ToUpper() == textBox1.Text