来自LINQ的对象具有自定义列表

时间:2013-10-22 21:12:13

标签: c# linq

我正在阐述这个问题:Create object from LINQ

我必须将contactsList从List更改为包含Name和Id的List。

public class DataItem
{
    public String Location { get; set; }
    public List<ContactInfo> ContactsList { get; set; }
}

public class ContactInfo
{
    public String PersonName { get; set; }
    public Int32 PersonId { get; set; }
}

        var myData= from table in sqlResults.AsEnumerable()
                        group table by table["LOCATION"] into groupby
                        select new DataItem
                        {
                            Location = groupby.Key.ToString(),
                            ContactsList = groupby.Select(row => new ContactInfo 
                            {
                                PersonName =   row["PERSON"].ToString(), 
                                PersonId = (Int32)row["PERSONID"]
                            }).ToList()
                        }; 
//TreeView
tv.DataContext = BrokerData;

我收到指定的广告投放无效

我在这里做错了什么?

更新

我在这里收到一个突出显示的错误:

new ContactInfo 
{
    PersonName =   row["PERSON"].ToString(), 
    PerrsonId = (Int32)row["PERSONID"]
}).

1 个答案:

答案 0 :(得分:2)

而不是弱类型的索引器

PersonId = (Int32)row["PERSONID"]

使用强类型Field扩展方法

PersonId = row.Field<Int32>("PERSONID")

如果PERSONID可以为null,并且您希望在这种情况下存储null,请将PersonId置为可空:

public Int32? PersonId { get; set; }

PersonId = row.Field<Int32?>("PERSONID")