我认为这可能是与语法相关的问题。我想要的是查询并从数据库中获取所有记录,然后使用foreach
迭代记录。
这里的问题是,如果我在linq中查询:
查询:
var balance = db.UserBalance.Where(d => d.ApplicationUserId == userId);
它永远不会识别天平中的属性来构造这样的东西:
foreach循环
foreach(var i in saldo)
{
if(balance.value < 0)
{
earnings += balance.value;
}
else
{
expenses -= saldo.value;
}
}
如果有人能给我一个提示,我将不胜感激
PS:抱歉我的英文不好
答案 0 :(得分:2)
您正在获取余额列表(“所有记录WHERE x为真”),但是从您的代码中可以看出您期望获得唯一记录。
您可以使用Single。
var balance = db.UserBalance.Single(d => d.ApplicationUserId == userId);
请注意,如果不保证记录存在,请使用SingleOrDefault并对余额执行空检查。
var balance = db.UserBalance.SingleOrDefault(d => d.ApplicationUserId == userId);
if (balance == null) {
// No balance was found.
return;
}
答案 1 :(得分:1)
这只是猜测,因为你没有展示你的表等,但你可能想要这个:
float earnings = 0;
float expenses = 0;
foreach (var balance in db.UserBalance.Where(d => d.ApplicationUserId == userId))
{
if(balance.value < 0)
earnings += balance.value;
else
expenses -= balance.value;
}
查询返回给定用户的UserBalance
s枚举,这是您实际想要迭代的内容。