2016-02-23 41 views
0

我想根据使用LINQ的某些条件为数据表格中的单元格设置一个真正的布尔值。根据一些条件使用LINQ设置数据表格单元格值

foreach (DataRow dr in dtLeftResult.Rows) 
     { 
      var shipNo = dr[0].ToString(); 
      var invoiceNo = dr[1].ToString(); 

      var res = dtInvoicesList.Rows 
      .Cast<DataRow>() 
      .Where(r => r.Field<string>("[Shipment#]") == shipNo && r.Field<string>("[Invoice#]") == invoiceNo) 
      .Select(r => r.Field<string>("IsValid")).First(); 
     } 

我需要在数据表中找到correcet行后将IsValid字段(boolean)设置为true。我正在查找该行,但我无法设置该值。

我该怎么办呢?

+0

如果您的对象“res”在上面的代码中有该行,那么您可以使用它来设置该值。 res [“IsValid”] = true; – Vinothkumar

回答

1

在你res变量是值的isValid因为你通话到Select(...)

你想要做的就是让该行:

var row = dtInvoicesList.Rows 
    .Cast<DataRow>() 
    .Where(r => r.Field<string>("[Shipment#]") == shipNo 
     && r.Field<string>("[Invoice#]") == invoiceNo) 
    .First(); 

并将其值设置:row["IsValid"] = true;

1

Select声明在您的查询中返回单元格的值,您要的是的DataTable

修改您的查询来获取过滤行,然后访问使用COLUMNNAME指数DataRow列。

var firstMatch = dtInvoicesList.Rows 
        .AsEnumerable()Where(r => r.Field<string>("[Shipment#]") == shipNo && r.Field<string>("[Invoice#]") == invoiceNo) 
        .FirstOrDefault(); 
if(firstMatch!= null) 
{ 
    firstMatch["IsValid"] = true; //new value. 
} 
相关问题