- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在 linq 查询中比较两个 DateTime 属性,类似于
下面那个——
var patients = from c in session.Query<Patient>() where c.DateAdded.AddDays(1) < c.AdmitDate select c;
using System;
using System.Collections.Generic;
using System.Data.SQLite;
using System.IO;
using System.Linq;
using System.Text;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using FluentNHibernate.Mapping;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
using NHibernate.Linq;
namespace ConsoleApplication1
{
class Program
{
private static Configuration _config;
static void Main(string[] args)
{
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
BuildSchema(session);
using(var transaction = session.BeginTransaction())
{
var foo = new Patient
{
Name = "Foo",
Sex = Gender.Male,
DateAdded = new DateTime(2009, 1, 1),
AdmitDate = new DateTime(2009, 1, 2)
};
var bar = new Patient
{
Name = "Bar",
Sex = Gender.Female,
DateAdded = new DateTime(2009, 1, 1),
AdmitDate = new DateTime(2009, 1, 2)
};
session.SaveOrUpdate(foo);
session.SaveOrUpdate(bar);
transaction.Commit();
}
session.Flush();
using (session.BeginTransaction())
{
var cats = from c in session.Query<Patient>() where
c.DateAdded.AddDays(1) < c.AdmitDate select c;
foreach (var cat in cats)
{
Console.WriteLine("patient name {0}, sex {1}", cat.Name,
cat.Sex);
}
}
}
Console.ReadKey();
}
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(
SQLiteConfiguration.Standard.InMemory()
)
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<Program>())
.ExposeConfiguration(c => _config = c)
.BuildSessionFactory();
}
private static void BuildSchema(ISession session)
{
new SchemaExport(_config)
.Execute(true, true, false, session.Connection, null);
}
}
public class PatientMap : ClassMap<Patient>
{
public PatientMap()
{
Id(x => x.Id);
Map(x => x.Name)
.Length(16)
.Not.Nullable();
Map(x => x.Sex);
Map(x => x.DateAdded);
Map(x => x.AdmitDate);
}
}
public class Patient
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Gender Sex { get; set; }
public virtual DateTime DateAdded { get; set; }
public virtual DateTime AdmitDate { get; set; }
}
public enum Gender
{
Male,
Female
}
最佳答案
回答上述问题:
using System;
using System.Linq;
using System.Reflection;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using FluentNHibernate.Mapping;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Dialect.Function;
using NHibernate.Hql.Ast;
using NHibernate.Linq.Functions;
using NHibernate.Tool.hbm2ddl;
using NHibernate.Linq;
using System.Collections.ObjectModel;
using System.Linq.Expressions;
using NHibernate.Linq.Visitors;
using NHibernate.Cfg.Loquacious;
namespace ConsoleApplication1
{
class Program
{
private static Configuration _config;
static void Main(string[] args)
{App_Start.NHibernateProfilerBootstrapper.PreStart();
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
BuildSchema(session);
using(var transaction = session.BeginTransaction())
{
var foo = new Patient
{
Name = "Foo",
Sex = Gender.Male,
DateAdded = new DateTime(2009, 1, 4),
AdmitDate = new DateTime(2009, 1, 6)
};
var bar = new Patient
{
Name = "Bar",
Sex = Gender.Female,
DateAdded = new DateTime(2009, 1, 1),
AdmitDate = new DateTime(2009, 1, 2)
};
session.SaveOrUpdate(foo);
session.SaveOrUpdate(bar);
transaction.Commit();
}
session.Flush();
using (session.BeginTransaction())
{
//x.PatientVisit.AdmitDate.Value.Date == x.DateAdded.Date
var patients = from c in session.Query<Patient>() where c.DateAdded.AddDays(1) < c.AdmitDate.Value select c;
foreach (var cat in patients)
{
Console.WriteLine("patient name {0}, sex {1}", cat.Name, cat.Sex);
}
}
}
Console.ReadKey();
}
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2008.Dialect<CustomDialect>()
.ConnectionString("Data Source=.;Initial Catalog=testdb;Integrated Security=True;Connection Reset=false")
)
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<Program>())
.ExposeConfiguration(c =>
{
c.LinqToHqlGeneratorsRegistry<ExtendedLinqtoHqlGeneratorsRegistry>();
_config = c;
})
.BuildSessionFactory();
}
private static void BuildSchema(ISession session)
{
new SchemaExport(_config)
.Execute(true, true, false, session.Connection, null);
}
}
public class PatientMap : ClassMap<Patient>
{
public PatientMap()
{
Id(x => x.Id);
Map(x => x.Name)
.Length(16)
.Not.Nullable();
Map(x => x.Sex);
Map(x => x.DateAdded);
Map(x => x.AdmitDate);
}
}
public class Patient
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Gender Sex { get; set; }
public virtual DateTimeOffset DateAdded { get; set; }
public virtual DateTime? AdmitDate { get; set; }
}
public enum Gender
{
Male,
Female
}
public class ExtendedLinqtoHqlGeneratorsRegistry : DefaultLinqToHqlGeneratorsRegistry
{
public ExtendedLinqtoHqlGeneratorsRegistry()
{
this.Merge(new AddDaysGenerator());
}
}
public class AddDaysGenerator : BaseHqlGeneratorForMethod
{
public AddDaysGenerator()
{
SupportedMethods = new[] {
ReflectionHelper.GetMethodDefinition<DateTimeOffset?>(d => d.Value.AddDays((double)0))
};
}
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
return treeBuilder.MethodCall("AddDays",
visitor.Visit(targetObject).AsExpression(),
visitor.Visit(arguments[0]).AsExpression()
);
}
}
public class CustomDialect : MsSql2008Dialect
{
public CustomDialect()
{
RegisterFunction(
"AddDays",
new SQLFunctionTemplate(
NHibernateUtil.DateTime,
"dateadd(day,?2,?1)"
)
);
}
}
关于linq - Nhibernate LINQ DateTime.AddDay 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492311/
DateTime.AddDays 和 Calendar.AddDays 有什么区别? DateTime 类型的日历是否独立? 最佳答案 DateTime.AddDays 只是将天数转换为刻度并将此刻度
我目前在 UTC+1 时区。 TimeZoneInfo.Local.BaseUtcOffset 返回 +1。 new DateTimeOffset(DateTime.Today).AddDays(4)
我有两个 TextBox,其中我获取 2 个日期并获取这两个日期之间的日期数组。我有一个代码 $(".txtto").change(function () { var
我正在编写脚本来检查文件是否超过一年。我收到一个无法比拟的错误。我不确定该如何解决此问题并感到困惑。 $文件 $myDate = Get-Date $path = $args[0] $files =
由于 DateTime.AddDays() 采用 double 参数,我担心当您添加天数时,可能会出现一些舍入错误。例如,假设我有以下循环: DateTime Now = DateTime.Today
是否有任何东西可以停止不在 while 循环内运行的 DateTime AddDays() 方法。我有这段简单的代码; DateTime last_day = monthCalendar2.Selec
这段代码试图设置 4 个标签为第 x 周、第 x+1 周、第 x+2 周和第 x+3 周,但是在使用 addDays(7) 更新时失败了,我只得到第 x 周、第 x 周、第 x 周和第 x 周。任何人
我正在创建一个这样的日期: DateTime TheDate = DateTime.UtcNow.AddDays(-180); TheDate = new DateTime(TheDate.Year,
using System; using System.Globalization; namespace Date_Problem { class Program { s
接下来的两行将相同的金额添加到相同的日期,结果日期部分相同,但不知何故时间部分有所不同! (new DateTime(2000,1,3,18,0,0)).AddDays(4535); (new D
我有这个简单的程序: DateTime aux = new DateTime(2012, 6, 12, 12, 24, 0); DateTime aux2 = new
我想编写一个扩展方法,将一天添加到 Nullable DateTime,但修改日期本身。 我想按如下方式使用它: someDate.AddOneDay(); 这直接改变了 someDate 的值。 我
我有一个非常简单的 DateTime 对象,它被设置为日期 01-01-0001。我被提供了一个值以添加到此 DateTime,以天为单位。不过,我发现两天的结果出现了意想不到的偏移。假设我打印了 A
我想在 for 循环中使用 AddDays() 方法。但它不起作用。尽管在循环中使用,但日值并没有增加。然后就是改造无限循环。例如; DateTime exDt = tempPermissionWar
我有velow脚本 $AddDays = Read-Host "How long user will be active (: in Days) " $DateInFutu
我正在编写一个小脚本,如果过去几天发生了一些事情,就会触发一个 Action 。 所以我有一个帖子及其日期的数据库,我想选择最近 2 天内的所有记录。 要选择过去 2 天内的所有内容,我需要知道 2
我有velow脚本 $AddDays = Read-Host "How long user will be active (: in Days) " $DateInFutu
这个问题在这里已经有了答案: Nullable DateTimes and the AddDays() extension (4 个答案) 关闭 7 年前。 嗨,AddDays 在 MVC4 中不起
我有一个日期时间对象 dt,它包含今天的日期。 DateTime dt = DateTime.Today; DateTime idt = new DateTime(); 我需要在循环到达当年的最后一天
最近新西兰在 2015 年 9 月 27 日实行夏令时。 SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); sd.setTimeZon
我是一名优秀的程序员,十分优秀!