我在数据库表中有以下列 - 记录:
Info - varchar(50)
Date - DateTime
Time - varchar(20) , format like hh:mm
现在我有一个功能
public GetRecords(DateTime pDateTime)
{
// this function should get all the records from above table whose DateTime is more than pDateTime
}
如何使用Linq? 我知道如何编写linq查询,但是如何将这些列组合到表的每一行并与pDateTime进行比较。
答案 0 :(得分:0)
最佳解决方案是将您的for row in df_phrase.itertuples():
index, phrase = row
for row in df_negations.itertuples():
index, negation = row
count = sum(1 for x in re.finditer(r"(?<!%s )\b%s\b" % (negation, re.escape(phrase)), normed))
表格更改为仅包含Record
和Info
;其中When
是记录信息的日期和时间。
When
如果您无法更改public IEnumerable<Record> GetRecords(DateTime after)
{
using (var db = new TheDbContext())
{
return db.Records
.Where(r => r.When > after);
}
}
架构。然后,您可以根据Record
在数据库中进行部分搜索,然后删除搜索日期之后而不是搜索时间之后的任何条目。
Date
答案 1 :(得分:0)
public List<FDetails> GetReocrds(DateTime date)
{
var fs = from f in DBContext.RecordsTable
where f.Date > date
&& ConvertToIntfun(f.Time.Split(':')[0]) >= date.Hour
&& ConvertToIntfun(f.Time.Split(':')[1])>date.Minute
select new FDetails(f.Id,f.Info, (DateTime)f.Date, f.Time);
return fs.ToList();
}
internal static int ConvertToIntfun(string value)
{
int result = 0;
if (int.TryParse(value, out result))
{
return result;
}
else
{
return result;
}
}
或
var fs = from f in DBContext.RecordsTable
where (new DateTime(f.Date.Value.Year, f.Date.Value.Month, f.Date.Value.Day, ConvertToIntfun(f.FTime.Split(':')[0]), ConvertToIntfun(f.Time.Split(':')[1]),0))>date
select new ForecastDetails(forecast.ForecastId, forecast.ForecastSummary, (DateTime)forecast.ForecastDate, forecast.ForecastTime);
return fs.ToList();