如何在 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# 中返回动态周数?的主要内容,如果未能解决你的问题,请参考以下文章
通过动态创建 linq 查询,在 c# 中为 Sql Equivalent “column is null”创建 Linq 表达式
如何使用基于 SQL Query 的连接在 C# 中编写 LINQ?