如何在 LINQ SQL C# 中返回动态周数?

Posted

技术标签:

【中文标题】如何在 LINQ SQL C# 中返回动态周数?【英文标题】:How to return number of week dynamic in LINQ SQL C#? 【发布时间】:2021-04-24 03:50:59 【问题描述】:

我有一个记录(周和年)以及这些在数据库记录中的数据,想要在我的控制器方法内的查询中使用 LINQ 语句来做同样的事情。如何为这些记录创建动态查询?他们返回随机值的记录(年和周),而不是与数据库表中的记录一起接收。我怎样才能动态地实现这一点?我是否创建一个参数来获取动态值?

        [HttpGet]
        public IList<ExtractionViewModel> GetExtractionViewModels()
        
            ProductionManagementEntities db = new ProductionManagementEntities();
    
            var scheduleList = (from p in db.ProductionDays
                                from m in db.Models
                                from mx in db.Models
                                from mb in db.Models
                                from ml in db.Models
                                join w in db.Weeks on p.WeekId equals w.WeekId
    
                                orderby w.Year ascending
                                orderby m.Name ascending
                                where (m.InActive == true)
                                where (mx.InActive == false)
                                where (mb.InActive == false)
                                where (ml.InActive == false)
                               
            // how to get a year back in linq and week?
    
                                select new ExtractionViewModel
                                
    
                                    Year = w.Year,
                                    Week = w.WeekNum,
                                    Day = p.ProductionDate,
                                    VW250 = m.Name,
                                    VW270 = mx.Name,
                                    VW2502PA = mb.Name,
                                    VW270PA = ml.Name
    
    
                                ).ToList();
           
            return scheduleList;
        
    
        // Model
        public class ExtractionViewModel
        
            public string Year  get; set;  // how to get this back to linq stament?
    
            public int Week  get; set;  // How to get this back on linq statement?
    
            public DateTime Day  get; set; 
    
            public string VW250  get; set; 
    
            public string VW270  get; set; 
    
            public string VW2502PA  get; set; 
    
            public string VW270PA  get; set; 
        
    
    // SQL Query
    SELECT TOP (1000) [ModelId]
          ,[Name]
          ,[Code]
          ,[CreatedDate]
          ,[CreatedBy]
          ,[ModifiedDate]
          ,[ModifiedBy]
          ,[InActive]
      FROM [ProductionManagement].[Schedule].[Model]

SELECT TOP (1000) [WeekId]
      ,[WeekNum]
      ,[Year]
      ,[CreatedDate]
      ,[CreatedBy]
      ,[ModifiedDate]
      ,[ModifiedBy]
      ,[InActive]
  FROM [ProductionManagement].[Schedule].[Week]

【问题讨论】:

根据问题指南,请不要发布代码、数据、错误消息等的图像 - 复制或键入问题中的文本。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。 【参考方案1】:

顺便说一句。您需要使用 using 与 db 上下文。例如:

using var db = new ProductionManagementEntities();

我认为您要查找的查询类似于以下内容。 您还没有向我们展示您使用的模型或 sql,这是一个猜测..

 var scheduleList = (from p in db.ProductionDays
                     join w in db.Weeks on p.WeekId equals w.WeekId
                     join m in db.Models on m.? equal p.? // TODO
                     orderby w.Year ascending
                     orderby m.Name ascending
                     where (m.InActive == true)
                     select new ExtractionViewModel
                     
                                    Year = w.Year,
                                    Week = w.WeekNum,
                                    Day = p.ProductionDate,
                                    VW250 = m.VW250,
                                    VW270 = mx.VW270
                     ).ToList();

【讨论】:

我有,它叫“ExtractiobViewModel” 请查看两个表的 sql 查询。

以上是关于如何在 LINQ SQL C# 中返回动态周数?的主要内容,如果未能解决你的问题,请参考以下文章

c# linq 动态多条件查询语句的写法

通过动态创建 linq 查询,在 c# 中为 Sql Equivalent “column is null”创建 Linq 表达式

C# - 多个属性上的动态 Linq 左外连接

如何使用基于 SQL Query 的连接在 C# 中编写 LINQ?

如何在linq C#中使用group by并获取记录列表[重复]

如何在 linq 查询 c# 中的 WHERE 语句后嵌入动态 OR 条件