MVC / LINQ /合并Iqueryable对象[关闭]

Posted

技术标签:

【中文标题】MVC / LINQ /合并Iqueryable对象[关闭]【英文标题】:MVC / LINQ / Consolidate Iqueryable object [closed] 【发布时间】:2021-10-26 18:43:15 【问题描述】:

我是初学者。

我有基于 ASP.NET 和实体框架的 ASP .Net 应用程序。

我构建了一个控制器,它从数据库中生成三个 iqueryable 对象。

可查询 1

Company Model Stock A
Dell Lat 5420 25
Dell Lat 5490 15
Dell Lat 7589 5
HP Eli 840 G6 15

可查询 2

Company Model Stock B
Dell Lat 5420 2

可查询 3

Company Model Stock C
Dell Lat 7589 5
HP Eli 840 G6 50

我想将这 3 个对象合并为一个。目标是传递这个对象在结果下方查看和打印

Company Model Stock A Stock B Stock C
Dell Lat 5420 25 2 0
Dell Lat 5490 15 0 0
Dell Lat 7589 5 0 5
HP Eli 840 G6 15 0 50

非常感谢您的帮助

问候 弗朗索瓦-泽维尔·德尔维洛伊 巴黎

【问题讨论】:

除了问题之外,您还应该包含到目前为止的代码努力回答您的问题/问题,因为Stack Overflow 不是代码编写服务)。在doing more research 之后,如果您遇到问题,您可以发布您尝试过的内容,并清楚地解释什么不起作用并提供minimal reproducible example 。我建议阅读How do I ask a Good QuestionWriting the Perfect Question。另外,请务必使用tour。 听起来您想要连接数据源并根据这些连接生成输出。这可以使用 Linq 或 Lamdas 来完成,并且有很多关于如何做到这一点的文档。对这个主题进行一些研究,然后返回究竟什么不起作用。 【参考方案1】:

我不确定我是否理解您的数据结构,但希望下面的代码对您有所帮助。

void Main()

    var data = new List<StockRecord>();
    data.Add(new StockRecord()  Company = "Dell", Model = "Lat 5420", Stock = "Stock A", Count = 25 );
    data.Add(new StockRecord()  Company = "Dell", Model = "Lat 5490", Stock = "Stock A", Count = 15 );
    data.Add(new StockRecord()  Company = "Dell", Model = "Lat 7589", Stock = "Stock A", Count = 5 );
    data.Add(new StockRecord()  Company = "HP", Model = "Eli 840 G6", Stock = "Stock A", Count = 15 );
    data.Add(new StockRecord()  Company = "Dell", Model = "Lat 5420", Stock = "Stock B", Count = 2 );
    data.Add(new StockRecord()  Company = "Dell", Model = "Lat 7589", Stock = "Stock C", Count = 5 );
    data.Add(new StockRecord()  Company = "HP", Model = "Eli 840 G6", Stock = "Stock C", Count = 50 );
    var q = data
        .GroupBy(x => newx.Company,x.Model)
        .Select(z => new 
            z.Key.Company,
            z.Key.Model,
            StockA = z.Where(y => y.Stock == "Stock A").Sum(y => y.Count),
            StockB = z.Where(y => y.Stock == "Stock B").Sum(y => y.Count),
            StockC = z.Where(y => y.Stock == "Stock C").Sum(y => y.Count),
         );
    

class StockRecord

    public string Company get;set;
    public string Model get;set;
    public string Stock  get; set; 
    public int Count  get;set;
~~~

【讨论】:

以上是关于MVC / LINQ /合并Iqueryable对象[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

并且找不到可接受类型为“System.Linq.IQueryable<MvcApplication1.Models.Student>”

OrderBy IQueryable 列表基于 LINQ 中的另一个内部列表 [重复]

将 IQueryable 与 Linq 一起使用

LINQ to SQL 中 ConcatUnionIntersectExcept 方法的使用

你会推荐啥支持 Linq/Iqueryable 的 OR/M 工具? [关闭]

使用 LINQ 的 IQueryable 左外连接的扩展方法