C# 如何在我的LINQ查询中使用add IN条件——无法转换类型';字节';输入';System.Object';

C# 如何在我的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

我正在为下面的查询编写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_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
也许我的工作会对您有所帮助。