[英]convert C# Linq to T-Sql
i'm a junior developer and trying to convert the following linq statement to T-Sql: 我是一名初级开发人员,尝试将以下linq语句转换为T-Sql:
var results = context
.Employees
.Where(item => (dateFilter.ToUpper() == "P") ? item.PublishedDate >= From : item.CapturedDate >= dateFromDT)
.Where(item => (dateFilter.ToUpper() == "P") ? item.PublishedDate <= dateTo : item.CapturedDate <= dateTo)
.FirstOrDefault()
Can one please help me? 可以帮我吗?
Select * from Employees where PublishedDate = From and .......
I think it should be like this. 我认为应该是这样。
Select Top 1 * from Employees
where
(dateFilter = "P" COLLATE Latin1_General_CS_AS AND PublishedDate >= From AND PublishedDate >=dateTo)
OR
(dateFilter != "P" COLLATE Latin1_General_CS_AS AND CapturedDate >= dateFromDT AND CapturedDate >= dateTo)
You could use something similar to this: 您可以使用类似于以下内容的方法:
select top 1 *
from employees
where (upper(DateFilter) = 'P' and PublishedDate >= From and PublishedDate <= dateTo)
or (upper(DateFilter) <> 'P' and CapturedDate >= dateFromDT and CapturedDate <= dateTo)
if DateFilter is a column in the table then it is better to skip the upper as it can degrade performance (given that you have a index on that column). 如果DateFilter是表中的一列,则最好跳过上面的那一列,因为它会降低性能(假设该列上有索引)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.