Group和Join Linq语句不会从控制器传递到我的视图



My View:

@model IEnumerable<TestingMainPage.Models.SummaryModel>
@if (Model.Count() > 1 )
{//Do something}
else
{//Do something else}

所涉及的错误:

The model item passed into the dictionary is of type  'System.Data.Entity.Infrastructure.DbQuery`1[<>f__AnonymousType11`4[System.Int32,System.Nullable`1[System.DateTime],System.String,System.Nullable`1[System.Int32]]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[TestingMainPage.Models.SummaryModel]'.

这是由linq语句引起的…

谁能告诉我这个linq语句有什么问题?我对linq还是个新手,还在试着弄清楚。

出于某种原因,我可以在linq中运行它,但它实际上不会在我的项目中将模型传递给我的视图?我假设是因为Linq语句有问题,因为如果我把它切换到一个非常简单的选择,那么它将传递模型..

        var BeginDate = DateTime.Now.AddDays(-5).ToString("d") + " 2:00:00";
        var EndDate = DateTime.Now.ToString("d") + " 2:00:00";
        DateTime Start = Convert.ToDateTime(BeginDate);
        DateTime End = Convert.ToDateTime(EndDate);
      var TestLinq = (from a in db.seqexp_master
                      join b in db.seqexp_detail on a.recid equals b.recid into b_join
                      from b in b_join.DefaultIfEmpty()
                      where
                        a.shipto == "1020" &&
                        (new string[] { "a", "c" }).Contains(a.status) &&
                        a.active == 1 &&
                        b.active == 1 &&
                        a.datetimestamp >= Start &&
                        a.datetimestamp <= End
                      group new { a, b } by new
                      {
                          a.recid,
                          a.datetimestamp,
                          a.status
                      } into g
                      orderby
                        g.Key.recid descending
                      select new
                      {
                          Recid = g.Key.recid,
                          datetimestamp = g.Key.datetimestamp,
                          status = g.Key.status,
                          Qty = g.Sum(p => p.b.qty)
                      });
return View(TestLinq);

任何帮助都是感激的由于

我想你也不需要看我的模型,但以防万一:

   public class SummaryModel
{
    public DateTime datetimestamp { get; set; }
    public char status { get; set; }
    public int? Recid { get; set; }
    public int? Qty { get; set; }
    public int? test { get; set; }
}

这就是问题所在,在您的查询末尾:

select new
{
    Recid = g.Key.recid,
    datetimestamp = g.Key.datetimestamp,
    status = g.Key.status,
    Qty = g.Sum(p => p.b.qty)
}

这是一个匿名类型,但是你的视图需要一个IEnumerable<SummaryModel>。不清楚SummaryModel是什么,但也许你想:

select new SummaryModel
{
    Recid = g.Key.recid,
    datetimestamp = g.Key.datetimestamp,
    status = g.Key.status,
    Qty = g.Sum(p => p.b.qty)
}

(如果是这样,我强烈建议您修改您的属性名称以遵循正常的。net约定…)

最新更新