对DataTable对象的查询错误是join子句中某个表达式的类型不正确。呼叫加入'中的类型推断失败

时间:2018-03-22 07:10:46

标签: c# asp.net linq

我在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;
}

请帮助以上查询..

1 个答案:

答案 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")
          };