我在Linq中选择查询时遇到了一些错误。
错误是,
join子句中某个表达式的类型不正确。呼叫'加入'
时,类型推断失败
代码如下,
dt_TDATA = new DataTable();
dt_TDATA.Columns.Add("MATNR", typeof(string));
dt_TDATA.Columns.Add("MAKTX", typeof(string));
dt_TDATA.Columns.Add("PHY_STK", typeof(Int32));
dt_TDATA.Columns.Add("LABST", typeof(Int32));
DataTable dtDealMat = GetDealMat(); //Get from Store procedure
var MatData = from Data in dt_TDATA.AsEnumerable()
join mat in dtDealMat on Data.Field<string>("MATNR") equals mat.Field<string>("vMATNR")
select new {
MATNR = Data.Field<string>("MATNR"),
MAKTX = Data.Field<string>("MAKTX"),
PHY_STK = Data.Field<string>("PHY_STK"),
LABST = Data.Field<string>("LABST")
};
//GetDealMat() function
private DataTable GetDealMat()
{
clsMOU objMast = new clsMOU();
objMast.vUserID = clsAppSession.SessionUserID;
DataTable dtDealMat = new DataTable();
dtDealMat.Columns.Add("vMATNR", typeof(string));
dtDealMat = objMast.GET_DelMatMapping();
return dtDealMat;
}
请帮助以上查询..
答案 0 :(得分:1)
可能是你没有读第二个数据表(dtDealMat.AsEnumerable())
var MatData = from Data in dt_TDATA.AsEnumerable()
join mat in dtDealMat.AsEnumerable() on Data.Field<string>("MATNR") equals mat.Field<string>("vMATNR")
select new {
MATNR = Data.Field<string>("MATNR"),
MAKTX = Data.Field<string>("MAKTX"),
PHY_STK = Data.Field<string>("PHY_STK"),
LABST = Data.Field<string>("LABST")
};