[英]What is the equivalent code of SQL query in C# with linq to datatable?
这是我在 T-SQL 中的查询,我想在 C# 中使用 linq to datatable 做确切的事情。
select
@found = MorningIsWorking,
@Sh_startTime = MorningStart,
@Sh_endTime = MorningEnd
from t
where
t.plannum = @pn and
t.Date = @datepart and
(@timepart between MorningStart and MorningEnd)
其中MorningIsWorking
是布尔值, MorningStart
和MorningEnd
, @timepart
是时间, @datepart
是 DateTime
已编辑
这就是我所做的,但我不知道它是否正确以及如何在变量中获取所需的值。
var res = from row in dt.AsEnumerable()
where row.Field<string>("plannum") == "995" &
row.Field<DateTime>("date") == Convert.ToDateTime("2016-08-25 10:25:00").Date &
Convert.ToDateTime(timepart) >= row.Field<DateTime>("MorningStart") &
Convert.ToDateTime(timepart) < row.Field<DateTime>("MorningEnd")
select row;
根据您提供的信息,我相信这是您要完成的工作的 LINQ。
DateTime timepart = new DateTime(2017,2,7);
DateTime datepart = new DateTime(2016, 8, 25, 10, 25, 0);
string plannum = "995";
using (DataSet1 dt = new DataSet1())
{
var res = from row in dt.t.AsEnumerable()
where row.plannum == plannum &&
row.Date == datepart &&
timepart >= row.MorningStart &&
timepart < row.MorningEnd
select row;
foreach (var row in res)
{
var found = row.MorningIsWorking;
var shStartTime = row.MorningStart;
var shEndTime = row.MorningEnd;
}
}
或者,如果您只期望返回一行,则可以按如下方式省略 foreach 循环。
DateTime timepart = new DateTime(2017,2,7);
DateTime datepart = new DateTime(2016, 8, 25, 10, 25, 0);
string plannum = "995";
using (DataSet1 dt = new DataSet1())
{
var res = (from row in dt.t.AsEnumerable()
where row.plannum == plannum &&
row.Date == datepart &&
timepart >= row.MorningStart &&
timepart < row.MorningEnd
select row).Single();
var found = res.MorningIsWorking;
var shStartTime = res.MorningStart;
var shEndTime = res.MorningEnd;
}
我使用了这个代码,它对我有用。
DataRow row = dt.AsEnumerable().FirstOrDefault
(r => (DateTime)r["date"] == timeToCompare.Date
& r.Field<string>("plannum") == "0995" &
tp >= r.Field<TimeSpan>("MorningStart") &
tp < r.Field<TimeSpan>("MorningEnd"));
然后使用它来获取值:
sh_starttime = row["MorningStart"].ToString();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.