我想离开联接两个表并求和一个字段,所以我进行了此查询:
IQueryable<Reference.Inventory.SearchDetailRequester> _qRequester =
from a in dbErp.EPROC_TR_ER_DETAIL
join b in dbErp.EPROC_TR_INVENTORY on
new Reference.Inventory.SearchDetailRequester { ID_REQUEST = a.ID_REQUEST , ID_KATALOG = a.ID_KATALOG}
equals
new Reference.Inventory.SearchDetailRequester { ID_REQUEST = b.ID_REQUEST, ID_KATALOG = b.ID_KATALOG }
into inv_join
from c in inv_join.DefaultIfEmpty()
where a.ID_REQUEST == ID_REQUEST && a.APROVE_BY_DS == 1 && a.APROVE_BY_GS == 1
select new Reference.Inventory.SearchDetailRequester
{
ID_KATALOG = a.ID_KATALOG,
TYPE_OF_GGS = a.TYPE_OF_GGS,
TRANSACTION_TYPE = "OUT",
DATE = c.DATE ?? "",
QTY = -1 * c.QTY ?? a.QTY,
ID_INVENTORY = c.ID_INVENTORY,
QTY_AVAILABLE = ((from d in dbErp.EPROC_TR_INVENTORY
where d.ID_KATALOG == a.ID_KATALOG
group d by new { d.ID_KATALOG } into e
select new { qty_ava = (System.Int32)e.Sum(p => p.QTY ?? 0) }).FirstOrDefault().qty_ava)
};
但是当我调试时,我收到此消息:
“ Reference.Inventory.SearchDetailRequester”类型出现在单个LINQ to Entities查询中的两个结构不兼容的初始化中。可以在同一查询的两个位置初始化一个类型,但前提是两个位置都设置了相同的属性,并且这些属性以相同的顺序设置。
有没有人可以帮忙?
您需要以匿名类型加入,我认为您不能像以前那样选择一个类:
new { ID_REQUEST = a.ID_REQUEST , ID_KATALOG = a.ID_KATALOG}
equals
new { ID_REQUEST = b.ID_REQUEST, ID_KATALOG = b.ID_KATALOG }
例如,如果b.ID_KATALOG
在数据库中可为空,则可以这样解决:
new { ID_REQUEST = a.ID_REQUEST , ID_KATALOG = a.ID_KATALOG}
equals
new { ID_REQUEST = b.ID_REQUEST, ID_KATALOG = (int)b.ID_KATALOG }
假设ID_KATALOGint
当然是。或者,您也可以用另一种方法来避免这种情况:
new { ID_REQUEST = a.ID_REQUEST , ID_KATALOG = (int?)a.ID_KATALOG}
equals
new { ID_REQUEST = b.ID_REQUEST, ID_KATALOG = b.ID_KATALOG }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句