这是我在这里发表的第一篇文章,所以请保持温和!
我是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);
所以,我仍然感到难过并且感觉“对此不太好”!!
答案 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();