我对Linq不熟悉,一直无法让它起作用。
public class ItemMaster
{
public int ItemId{ get; set; }
//other fields
public IList<ItemDetail> Details { get; set; }
}
public class ItemDetail
{
public int DetailId{ get; set; } ;
public int ItemId{ get; set; } ;
//other fields
}
我的ViewModel拥有
DataTable dtMaster = da.GetItemsMasterDataTable();
DataTable dtDetail = da.GetItemsDetailDataTable();
var list = (from m in dtMaster.AsEnumerable()
select new ItemMaster
{
ItemId = m.Field<int>("ItemId"),
//other fields
Details = (from d in dtDetail.AsEnumerable()
where d["ItemId"] == m["ItemId"]
select new ItemDetail
{
DetailId = d.Field<int>("DetailId"),
ItemId = d.Field<int>("ItemId")
//other fields
}).ToList()
}).ToList();
该列表确实检索到了所有主项,但详细信息计数始终为零。因此,嵌套查询未起作用。请帮忙!谢谢。
d["ItemId"]
返回什么?也许==
不是正确的比较器。 - Thomas==
只会匹配字面上相同的对象,而不是代表相同值的两个对象。 - Thomas