Я новичок в Linq и не смог получить эту работу.Вложенный выбор в C# 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 "]' return? Возможно, '==' не является правильным компаратором. – Thomas
Я пробовал m.Field ("ItemId") == d.Field ("ItemId"). Это тоже не работало. –
pj123
try: где d.Field ("ItemId") == m.Field ("ItemId") –
graver