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约定…)