0

我正在阐述这个问题:从 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"]
}).
4

1 回答 1

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")
于 2013-10-22T22:29:22.147 回答