4

次のシリアル化可能なクラスがあります。

[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 を identifier からの linq として認識するため、受け入れられないことです。

エラー: 表現用語 'from' が無効です

ハードディスクに保存されているxmlオブジェクトをデシリアライズしているため、クラスパブリック文字列「from」を変更できません。

この問題を回避するにはどうすればよいですか?

List.FindAll などを使用できることはわかっていますが、linq を使用して実行できるかどうかを知りたいです。

4

3 に答える 3

4

@fromただし、David Arno は、 を介してキーワードとの衝突を回避する方法を示しています。

ハードディスクに保存されているxmlオブジェクトをデシリアライズしているため、クラスパブリック文字列「from」を変更できません。

別のアプローチとして:

[XmlElement("from")]
public string From {get;set;}

これはXmlSerializer、名前をマップする方法を示しています。その後、次を使用できます。

var query = from p in listado 
            where p.From.ToUpper() == textBox1.Text
于 2013-10-21T09:49:18.007 に答える