使用LINQ将值添加到具有Dictionary属性的对象属性

时间:2014-03-25 05:32:19

标签: c# linq dictionary

我有一个数据集,可以在string(Phone, mobile, skype)中返回一些联系信息。我创建了一个具有Dictionary属性的对象,我可以将联系人信息放在一个键值对中。问题是,我使用Linq分配对象的值。希望有人可以提供帮助。这是我的代码:

public class Student
    {
        public Student()
        {
            MotherContacts = new ContactDetail();
            FatherContacts = new ContactDetail();
        }
        public ContactDetail MotherContacts { get; set; }
        public ContactDetail FatherContacts { get; set; }
    }

public class ContactDetail
{
    public ContactDetail()
    {
        Items = new Dictionary<ContactDetailType, string>();
    }
    public IDictionary<ContactDetailType, string> Items { get; set; }

    public void Add(ContactDetailType type, string value)
    {
        if(!string.IsNullOrEmpty(value))
        {
            Items.Add(type, value);
        }
    }
}

public enum ContactDetailType
{
    PHONE,
    MOBILE
}

这里是我如何为Student对象赋值:

    var result = ds.Tables[0].AsEnumerable();
    var insuranceCard = result.Select(row => new Student()
        {
             MotherContacts.Items.Add(ContactDetailType.PHONE, row.Field<string>("MotherPhone"),
             MotherContacts.Items.Add(ContactDetailType.MOBILE, row.Field<string>("MotherMobile")
        }).FirstOrDefault();

编译器说在上下文中无法识别MotherContacts。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我认为您的代码应如下所示:

var insuranceCard = result.Select(row => 
{ 
     var s = new Student();
     s.MotherContacts.Items.Add(ContactDetailType.PHONE, row.Field<string>("MotherPhone");
     s.MotherContacts.Items.Add(ContactDetailType.MOBILE, row.Field<string>("MotherMobile");
     return s;
}).FirstOrDefault();

您正在以错误的方式使用对象初始值设定项语法。正确使用是:

new Student{MotherContacts = value}其中值必须为ContactDetail