如何组合两列Date和Time并使用linq

时间:2015-09-11 02:13:40

标签: c# linq datetime

我在数据库表中有以下列 - 记录:

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进行比较。

2 个答案:

答案 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)) 表格更改为仅包含RecordInfo;其中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();