C# 如何在我的LINQ查询中使用add IN条件——无法转换类型';字节';输入';System.Object';
我正在为下面的查询编写LINQC# 如何在我的LINQ查询中使用add IN条件——无法转换类型';字节';输入';System.Object';,c#,linq,C#,Linq,我正在为下面的查询编写LINQ Select DIS.iDataItemID, DIS.iDataItemCurrentStatusID, DI.iDataTypeID, DI.iEmployeeID, DI.iEmployerID, DI.iLinkID, DI.iSystemID, DI.sData, DI.sEmployerCode, DI.sRecieptID, COunt(*) from OT_BackendUpdate_DataItem DI INNER JOIN OT_Back
Select DIS.iDataItemID, DIS.iDataItemCurrentStatusID, DI.iDataTypeID,
DI.iEmployeeID, DI.iEmployerID, DI.iLinkID, DI.iSystemID, DI.sData,
DI.sEmployerCode, DI.sRecieptID, COunt(*)
from OT_BackendUpdate_DataItem DI
INNER JOIN OT_BackendUpdate_DataItemStatus DIS ON DIS.iDataItemID =
DI.iDataItemID
INNER JOIN OT_BackendUpdate_RefDataItemStatus ON DIS.iDataItemCurrentStatusID
= OT_BackendUpdate_RefDataItemStatus.iDataItemStatusID
AND DIS.iDataItemCurrentStatusID = 1 AND
DIS.iDataItemCurrentStatusID IN (
SELECT top 1 iDataItemCurrentStatusID FROM OT_BackendUpdate_DataItemStatus
Where
OT_BackendUpdate_DataItemStatus.iDataItemID = DI.iDataItemID
order by OT_BackendUpdate_DataItemStatus.dDateEffective desc
)
GROUP BY DIS.iDataItemID, DIS.iDataItemCurrentStatusID, DI.iDataTypeID,
DI.iEmployeeID, DI.iEmployerID, DI.iLinkID, DI.iSystemID, DI.sData,
DI.sEmployerCode, DI.sRecieptID
我已经在下面写了LINQ,需要知道如何在这上面使用Group by
_result = from _dataItem in _msaDBContext.OT_BackendUpdate_DataItem
join _dataItemStatus in _msaDBContext.OT_BackendUpdate_DataItemStatus on _dataItem.iDataItemID equals _dataItemStatus.iDataItemID
join _refDataItemStatus in _msaDBContext.OT_BackendUpdate_RefDataItemStatus on _dataItemStatus.iDataItemCurrentStatusID equals _refDataItemStatus.iDataItemStatusID
where _dataItemStatus.iDataItemCurrentStatusID == _processingStatus.iDataItemStatusID && _systemIDs.Contains(_dataItem.iSystemID) && _dataItem.iDataTypeID == _dataType.iDataTypeID
&& (_msaDBContext.OT_BackendUpdate_DataItemStatus.Where(x=>x.iDataItemID == _dataItem.iDataItemID).OrderByDescending(x=>x.dDateEffective).Select(x=>x.iDataItemCurrentStatusID).Take(1)).Equals(_dataItemStatus.iDataItemCurrentStatusID)
group _refDataItemStatus by new
{
_dataItemStatus.iDataItemCurrentStatusID,
_dataItemStatus.iDataItemID,
_dataItem.iDataTypeID,
_dataItem.iEmployeeID,
_dataItem.iEmployerID,
_dataItem.iLinkID,
_dataItem.iSystemID,
_dataItem.sData,
_dataItem.sEmployerCode,
_dataItem.sRecieptID
} into g
select new
{
iDataItemID = g.Key.iDataItemID,
iDataItemCurrentStatusID = g.Key.iDataItemCurrentStatusID,
iDataTypeID = g.Key.iDataTypeID,
iLinkID = g.Key.iLinkID,
sData = g.Key.sData,
iEmployeeID = g.Key.iEmployeeID,
iEmployerID = g.Key.iEmployerID,
sEmployerCode = g.Key.sEmployerCode,
iSystemID = g.Key.iSystemID,
sReceiptID = g.Key.sRecieptID,
Count = g.Count()
};
LINQ查询在该行中失败
(_msaDBContext.OT_BackendUpdate_DataItemStatus.Where(x=>x.iDataItemID == _dataItem.iDataItemID).OrderByDescending(x=>x.dDateEffective).Select(x=>x.iDataItemCurrentStatusID).Take(1)).Equals(_dataItemStatus.iDataItemCurrentStatusID)
请让我知道,如何使用LINQ在子查询条件下编写SQL
PFB上面LINQ行中的异常详细信息,我正在尝试编写一个子查询
"Unable to cast the type 'System.Byte' to type 'System.Object'. LINQ to Entities only supports casting EDM primitive or enumeration types."
请让我知道我在这里遗漏了什么。试试这个:
\u msaDBContext.OT\u BackendUpdate\u DataItemStatus.Where(x=>x.iDataItemID==\u dataItem.iDataItemID)。OrderByDescending(x=>x.dDateEffective)。选择(x=>x.iDataItemCurrentStatusID)。FirstOrDefault()==\u DataItemStatus.iDataItemCurrentStatusID
也许我的工作会对您有所帮助。