LINQ:将内联查询重写为Linq方法样式?

如何使用LINQ方法而不是内联查询样式重写?
var cp = from DataRow r in rptDataPkg.Datasets.Item(0).Result.Rows
                where (r.Field<string>("UnitItem") == "PC") &&
                      (r.Field<string>("UnitItem") == "Hs") &&
                      (r.Field<string>("UnitItem") == "U")
                select new CurrProjected 
                { 
                    doAddUp = (r.Field<Decimal>("Fld1") + r.Field<Decimal>("Fld2")) 
                                == r.Field<Decimal>("Fld3")
                };
    
已邀请:
请尝试以下方法
var cp = rptDataPkg.Datasets.Item(0).Result.Rows
  .Cast<DataRow>()
  .Where(r => (r.Field<string>("UnitItem") == "PC") &&
              (r.Field<string>("UnitItem") == "Hs") &&
              (r.Field<string>("UnitItem") == "U"))
  .Select(r => new CurrProjected 
               { 
                   doAddUp = (r.Field<Decimal>("Fld1") + r.Field<Decimal>("Fld2")) 
                             == r.Field<Decimal>("Fld3")
               });
    
我个人喜欢这种语法与其他解决方案。
var cp = rptDataPkg.Datasets.Item(0).Result.Rows
                .Where(r => r.Field("UnitItem") == "PC")
                .Where(r => r.Field("UnitItem") == "Hs")
                .Where(r => r.Field("UnitItem") == "U")
                .Select(r => new CurrProjected
                {
                    doAddUp = (r.Field("Fld1") + r.Field("Fld2"))
                                     == r.Field("Fld3")
                });
    

要回复问题请先登录注册