Lambda语句语法 - 帮助学习者

时间:2014-02-24 14:30:29

标签: c# entity-framework-4 lambda

这是我在这里发表的第一篇文章,所以请保持温和!

我是c#的新手,因此对lambda来说很新。我正在尝试构造一个lambda语句,我错了,因为它没有错误,但它没有返回任何值。

我要做的是从数据库选择

的表中选择一些信息
SELECT slope
FROM   scaleTable
WHERE  percentage = aPercentagePassedIn

这应该只返回一条记录。

我们正在使用实体框架。

这就是我所拥有的,但正如我所说,我知道这是错误的:

List<ScaleTable> maxSlope = ScaleTableList.Where(a => a.Slope.Equals(ScaleTableList.Where(b => b.Percentage.Equals(aPercentagePassedIn)))).ToList();

感谢您的帮助。

更新1

非常感谢你帮助@ m1Lb4nKs和@Habib。我已经尝试了所有选项,但由于某些原因它不喜欢SingleOrDefault或Where(错误是表不包含SingleOrDefault或Where的定义)当我使用表名为:

var result = ScaleTable.SingleOrDefault(r => r.Percentage == aPercentagePassedIn);

var result = ScaleTable.Where(x => x.Percentage = aPercentagePassedIn).Select(y => y.slope).FirstOrDefault();    

有什么想法吗?

更新2

好的,谢谢@Millie。我已经在顶部使用了使用声明,所以这不是问题。

我将我的代码更改为此但它错误地“无法将类型十进制隐式转换为bool”。百分比是小数。

List<ScaleTable> maxSlope = ScaleTableList.Where(x => x.Percentage = aPercentagePassedIn).Select(y => y.slope).FirstOrDefault();

所以我尝试了这个但是得到了一个错误,基本上说它无法将类型ScaleTable转换为System.Collections.Generic.List

List<ScaleTable> maxSlope = ScaleTableList.SingleOrDefault(r => r.Percentage == aPercentagePassedIn);

所以,我仍然感到难过并且感觉“对此不太好”!!

2 个答案:

答案 0 :(得分:0)

您可以这样做:

ScaleTableList.Where(x => x.percentage = aPercentagePassedIn).Select(y => y.slope).ToList()

如果它只返回一条记录,那么:

ScaleTableList.Where(x => x.percentage = aPercentagePassedIn).Select(y => y.slope).FirstOrDefault()

答案 1 :(得分:0)

对于那些访问这个问题的人,我设法使用受到回应的人的赞赏帮助解决了这个问题。我最终得到的代码是:

decimal maxSlope = ScaleTableList.Where(x => x.Percentage == aPercentagePassedIn).Select(y => y.Slope).FirstOrDefault();