我有以下可序列化类:

[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

08-26 19:56
查看更多