2014-07-16 2 views
1

내 인생에 대해 내가 HomeController 데 걸리는 오류를 두 번 클릭하고 라인 statsModel.Donations = (from q in db.Shows where (q.Id == 1) select new { q.Donations }); 내에서 선택 문을 강조 표시하면 오류 Cannot implicitly convert type 'System.Linq.IQueryable<AnonymousType#1>' to 'bool?' 얻는 방법을 그림 수 없습니다.MVC 5 'System.Linq.IQueryable'형식을 암시 적으로 bool로 변환 할 수 없습니까?

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 필드가 특정 레코드에 대해 true 또는 false인지 여부입니다.

statsModel.Donations = (from q in db.Shows where (q.Id == 1) select new { q.Donations }); 

Donations에 익명 형식 개체의 컬렉션을 할당하려고합니다이 하나를 저장할 수 있습니다 :

어떤 도움이 날 많은

+0

꽤 명확한 것 같다을 - 'Donations'은'Nullable '로 정의되어 있지만 당신은 그것에 질의를 할애하고 있습니다. 대신 쿼리가 단일 true/false 값을 반환해야합니까? –

답변

2

Donations이 모델의 부울 필드라고 가정하고 당신은 단지 당신이 단지 싶은 생각 문신 ID에 대한 하나 개의 레코드 기대 :

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); 
+0

정말 고마워. 내가 원했던 바로 그거야 .-) – iggyweb

1

문제 :-) 감사 것이 라인이다 value (Nullable)입니다.

반환하려는 것은 특정 레코드에 대해 표시 테이블 내의 기부 및 인물 필드가 true 또는 false인지 여부입니다.

당신은 같은 것을 필요

statsModel.Donations = db.Shows.Any(q=> q.Id == 1); 

데이터베이스에 Donations 유형 부울이다 당신의 분야의 경우를, 다음 중 하나를 First/FirstOrDefault, Single/SingleOrDefault가에 따라 사용, 쿼리에서 해당의 단일 인스턴스를 얻을 필요 귀하의 요구 사항.

statsModel.Donations = (from q in db.Shows where (q.Id == 1) select q.Donations) 
         .FirstOrDefault(); 
관련 문제