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

本文关键字:LINQ 对象 列表 自定义 | 更新日期: 2023-09-27 18:36:38

我正在阐述这个问题:从 LINQ 创建对象

我不得不将联系人列表从列表更改为包含姓名和 ID 的列表。

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"]
}).

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

而不是弱类型索引器

PersonId = (Int32)row["PERSONID"]

使用强类型Field扩展方法

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

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

public Int32? PersonId { get; set; }

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