对于我的生活,如果我双击HomeController带来的错误并突出显示行Cannot implicitly convert type 'System.Linq.IQueryable<AnonymousType#1>' to 'bool?'
中的select语句,我无法弄清楚我是如何得到错误statsModel.Donations = (from q in db.Shows where (q.Id == 1) select new { q.Donations });
的。 / p>
Show.cs
namespace WebApplication1.Models
{
using System;
using System.Collections.Generic;
public partial class Show
{
public int Id { get; set; }
public Nullable<bool> Donations { get; set; }
}
}
StatsisticsModel.cs
namespace WebApplication1.Models
{
using System;
public class StatisticsModels
{
public int UserCount { get; set; }
public decimal? TotalAmount { get; set; }
public Nullable<bool> Donations { get; set; }
}
}
的HomeController
[ChildActionOnly]
public ActionResult Statistics()
{
var statsModel = new StatisticsModels();
statsModel.UserCount = (from m in db.AspNetUsers where (m.UserName != "someone") && (m.EmailConfirmed == true) select new { m.UserName }).Count();
statsModel.TotalAmount = db.Donations.Sum(o => o.Amount);
statsModel.Donations = (from q in db.Shows where (q.Id == 1) select new { q.Donations });
return View(statsModel);
}
任何人都可以请求帮助,我想要返回的是Show表中的Donations和People字段对于特定记录是真还是假。
我非常感谢任何帮助: - )
答案 0 :(得分:2)
假设Donations
是模型中的布尔字段,并且您只希望获得一条针对身份证的记录,我认为您只是想要:
statsModel.Donations = (from q in db.Shows where (q.Id == 1) select q.Donations).Single();
或
statsModel.Donations = db.Shows.Where(q => q.Id == 1).Single(q => q.Donations);
答案 1 :(得分:1)
问题在于这一行:
statsModel.Donations = (from q in db.Shows where (q.Id == 1) select new { q.Donations });
这将尝试将匿名类型对象的集合分配给Donations
,它可以包含单个值(Nullable)。
我想要回归的是内部的捐款和人员领域 Show表对于特定记录是真还是假。
您需要以下内容:
statsModel.Donations = db.Shows.Any(q=> q.Id == 1);
如果数据库中的字段Donations
的类型为boolean,那么您需要使用First/FirstOrDefault
,Single/SingleOrDefault
根据您的要求从查询中获取该字段的单个实例。
statsModel.Donations = (from q in db.Shows where (q.Id == 1) select q.Donations)
.FirstOrDefault();