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

发布于 2024-11-01 07:38:45 字数 587 浏览 0 评论 0原文

如何使用 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")
                };

How could this be re-written using LINQ methods instead of inline query style?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

滥情空心 2024-11-08 07:38:45

就我个人而言,我更喜欢这种语法而不是其他解决方案。
<代码>

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

I prefer this syntax to the other solutions, personally.

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

花开浅夏 2024-11-08 07:38:45

尝试以下操作

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

Try the following

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")
               });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文