如何修改此Select语句以使用LINQ获取数据?

时间:2013-07-18 07:04:56

标签: c# linq

我有两个数据表LSSTiTableLSSTiTable1。我想从row1row2获取满足特定条件的数据。我认为错误是因为在满足条件row1row2row1它返回三件事LDSIDLoopPairIDLocCode。有时LocCode会返回Null Value。因此错误。但我该如何克服这个问题?

var rowData =
 (from row1 in LSSTiTable.AsEnumerable()
  join row2 in LSSTiTable1.AsEnumerable()
  on new { a = row1.Field<int>("LDSID"), b = row1.Field<byte>("LoopPairID") }
  equals new { a = row2.Field<int>("LDSID"), b = row2.Field<byte>("LoopPairID") }
  select new { row1, row2 }).ToList();

这是我得到的错误

  

'System.Data.DataRow'不包含'LocCode'的定义   没有扩展方法'LocCode'接受类型的第一个参数   可以找到'System.Data.DataRow'(你是否错过了使用   指令或程序集引用?)

2 个答案:

答案 0 :(得分:0)

试试这个:

foreach (var rowItem in rowData)
{
    var locCodeValueInRow1 = rowItem.row1[LSSTiTable.Columns["LocCode"].Ordinal];
    var locCodeValueInRow2 = rowItem.row2[LSSTiTable1.Columns["LocCode"].Ordinal];
}

答案 1 :(得分:0)

重新检查数据库表中的LDSID和LoopPairID是否为int和byte。它可能是其他类型。