【问题标题】:Turning SQL into LINQ Query C# mvc将 SQL 转换为 LINQ 查询 C# mvc
【发布时间】:2020-12-13 00:34:33
【问题描述】:
我怎样才能把这段代码变成 linq Query?
SELECT
max_valor, FORMAT(Data_cont, 'hh:mm')
FROM
dbo.Conteudo
WHERE
nomeAl = @id
AND FORMAT(Data_cont, 'dd') = FORMAT(GETDATE(), 'dd')
ORDER BY
Data_cont
@id 是页面 ID,
谢谢:)
【问题讨论】:
标签:
c#
sql
asp.net-mvc
linq
【解决方案1】:
尝试关注。我模拟了实体类,让您更好地可视化代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
namespace ConsoleApplication166
{
class Program
{
static void Main(string[] args)
{
Context db = new Context();
string id = "abc";
var results = db.Conteudo
.Where(x => (x.nomeAl == id) && (x.Data_cont.Day == DateTime.Now.Day))
.OrderBy(x => x.Data_cont)
.Select(x => new { max_valor = x.max_valor, date = x.Data_cont.ToString("hh:mm") })
.ToList();
}
}
public class Context
{
public List<Conteudo> Conteudo { get; set; }
}
public class Conteudo
{
public string nomeAl { get; set; }
public DateTime Data_cont { get; set; }
public string max_valor { get; set; }
}
}
【解决方案2】:
你可以检查一下。
1 如果要获取所有列
int currentDay = DateTime.Now.Day;
var result = yourDbContext.Conteudo.OrderBy(x => x.Data_cont).Where(x => x.nomeAl == pageId && x.Data_cont.Day == currentDay)
2 如果只需要max_valor,FORMAT(Data_cont, 'hh:mm')
int currentDay = DateTime.Now.Day;
var result = yourDbContext.Conteudo.OrderBy(x => x.Data_cont).Where(x => x.nomeAl == pageId && x.Data_cont.Day == currentDay)
.Select(x => new {
max_valor = x.max_valor,
formattedTime = x.Data_cont.ToString("hh:mm")
}).ToList()