ASP.NET MVC LINQ 中的矩阵输出

Posted

技术标签:

【中文标题】ASP.NET MVC LINQ 中的矩阵输出【英文标题】:Matrix output in ASP.NET MVC LINQ 【发布时间】:2020-04-17 13:37:36 【问题描述】:

我有 3 个简单的表格

tblQual (ID, QualName)

tblPerson (ID, PersonName)

tblPersonQual(ID、PersonID、QualID、ExpiryDate)

我想显示一个矩阵,其中 PersonName 位于左侧,QualName 位于顶部,ExpiryDate 位于中间。我该怎么做?

我试过了,但不开心。

var QualMatrix = from c in db.tblPersonQual
    join q in db.tblQual on c.QualID equals q.ID
    join p in db.tblPerson on c.PersonID equals p.ID
                         group c by c.ID into g
                         select new
                         
                             rowKey = g.Key,
                             rowData = g.Select(c => new  Qual = q.QualName, Expiry = c.Expiry )
                         ;

在输出视图方面类似于此

【问题讨论】:

LINQ Pivot 查询,这可能对你有帮助***.com/questions/167304/… 【参考方案1】:

据我了解,您希望显示一个包含 QualName、ExpiryDate 和 QualName 的矩阵。我们可以通过修改groupby子句来使用相同的查询。

var QualMatrix = from c in db.tblPersonQual
                 join q in db.tblQual on c.QualID equals q.ID
                 join p in db.tblPerson on c.PersonID equals p.ID
                 group new  q.QualName,p.PersonName by new  c.ID,c.ExpiryDate  into g
                 select new
                 
                       QualName=g.Select(e=>e.QualName).FirstOrDefault(),
                       ExpirtyDate=g.Key.Expiry,
                       PersonName=g.Select(e=>e.PersonName).FirstOrDefault(),
                 ;

希望这能满足您的要求。

【讨论】:

您好,感谢您的回复,那么我将如何在视图(剃刀)矩阵中显示此数据输出?那么让每个人都列在左侧,所有的资格列在顶部和到期日期作为中间的值? 能否分享一下您的矩阵模型设计,以便我理解?

以上是关于ASP.NET MVC LINQ 中的矩阵输出的主要内容,如果未能解决你的问题,请参考以下文章

在 sql asp.net mvc 5 中使用 linq 时如何格式化记录中的数据?

csharp ASP.NET MVC和LINQ

ASP.NET MVC 4、EF 和 LINQ:为多对多关系创建特定的 LINQ 查询

在不使用 LINQ 和 EF 的情况下从 ASP.NET 切换到 ASP MVC

ASP.net MVC LINQ 空引用异常 [重复]

asp.net(MVC) linq语句多条件查询