如何使用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")
};
答案 0 :(得分:1)
我个人更喜欢这种语法与其他解决方案。
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")
});
答案 1 :(得分:0)
尝试以下
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")
});