Asp.net 选择A,其中A和小于Ok谢谢丹尼尔…虽然如果我想要一个在2012年1月24日之前的约会不应该是@John:的确,这是正确的。现在我引用你的编辑:发票日期今天正好超过一年…..所以任何注明日期的内容都非常感谢你的帮助请查看我对原始帖子的编辑--Iv尝试过…DateTime one yearago=DateTime.now.subtract new timespan 365,0,0,0。。但同样的结果 DateTime timeNow = DateTime.Now; DateTime timeToCompare = DateTime.Now.Subtract(new TimeSpan(365, 0, 0, 0)); ; var selectedObject = (from workstation in db.Work_Station join invoice in db.Invoices on workstation.id equals invoice.Site_Id where InvoiceDate > timeToCompare select workstation).Distinct().ToList();

Asp.net 选择A,其中A和小于Ok谢谢丹尼尔…虽然如果我想要一个在2012年1月24日之前的约会不应该是@John:的确,这是正确的。现在我引用你的编辑:发票日期今天正好超过一年…..所以任何注明日期的内容都非常感谢你的帮助请查看我对原始帖子的编辑--Iv尝试过…DateTime one yearago=DateTime.now.subtract new timespan 365,0,0,0。。但同样的结果 DateTime timeNow = DateTime.Now; DateTime timeToCompare = DateTime.Now.Subtract(new TimeSpan(365, 0, 0, 0)); ; var selectedObject = (from workstation in db.Work_Station join invoice in db.Invoices on workstation.id equals invoice.Site_Id where InvoiceDate > timeToCompare select workstation).Distinct().ToList();,asp.net,linq,Asp.net,Linq,因此,使用LINQ尝试比较数据库中的2个值,并选择今天的日期小于一年的位置…因此将选择12月24日至13日24/1日之间的任何值 所以我有 var selectedObject = (from workstation in db.Work_Station join invoice in db.Invoices on workstation.id equals invoice.Site_Id where Invoice

因此,使用LINQ尝试比较数据库中的2个值,并选择今天的日期小于一年的位置…因此将选择12月24日至13日24/1日之间的任何值

所以我有

  var selectedObject =
            (from workstation in db.Work_Station
             join invoice in db.Invoices on workstation.id equals invoice.Site_Id
             where InvoiceDate < DateTime.Now.AddYears(-1)
             select workstation).Distinct().ToList();
这正在生成一个列表,但它不正确。 我已经玩了好几年了,但似乎还没弄明白。。 有人有什么想法吗? 多谢各位

编辑:
大家好,谢谢你们的快速回复……实际上我犯了一个小错误,我想返回的值的发票日期正好大于今天的一年……所以任何日期=一年前,应该返回任何日期介于现在和一年前之间的日期,但没有返回任何内容……我做错了什么?请告知……谢谢

您的查询与您的文字解释相符。但两者都与您的样本数据不匹配

您需要的是日期大于或等于一年前的所有数据:

var selectedObject =
            (from workstation in db.Work_Station
             join invoice in db.Invoices on workstation.id equals invoice.Site_Id
             where InvoiceDate >= DateTime.Today.AddYears(-1)
             select workstation).Distinct().ToList();
如果您的发票日期可能在将来,您还需要指定发票的日期应小于或等于今天:

var selectedObject =
            (from workstation in db.Work_Station
             join invoice in db.Invoices on workstation.id equals invoice.Site_Id
             where InvoiceDate >= DateTime.Today.AddYears(-1)
                && InvoiceDate <= DateTime.Today
             select workstation).Distinct().ToList();
顺便说一句:你想用DateTime.Today而不是DateTime.Now。
使用DateTime.Now将不会从2012年1月24日返回没有时间或时间早于现在的发票。

提供发票所属的日期范围:

  var beginDate = DateTime.Now.AddYears(-1);
  var endDate = DateTime.Now;
  var selectedObject =
            (from workstation in db.Work_Station
             join invoice in db.Invoices on workstation.id equals invoice.Site_Id
             where invoice.InvoiceDate >= beginDate &&
                   invoice.InvoiceDate <= endDate
             select workstation).Distinct().ToList();

代码将如下所示

var selectedObject =
            (from workstation in db.Work_Station
             join invoice in db.Invoices on workstation.id equals invoice.Site_Id
             where InvoiceDate >= DateTime.Now.AddYears(-1) &&
                   InvoiceDate <= DateTime.Now
             select workstation).Distinct().ToList();

我会使用一些外部时态变量,以避免查询中的DateTime操作,有时C DateTime和SQL DateTime2无法相处

DateTime timeNow = DateTime.Now;
DateTime timeToCompare = DateTime.Now.Subtract(new TimeSpan(365, 0, 0, 0)); ;
var selectedObject = (from workstation in db.Work_Station
                      join invoice in db.Invoices on workstation.id equals invoice.Site_Id
                      where InvoiceDate > timeToCompare
                      select workstation).Distinct().ToList();
看看这是否有帮助我有很多这样做的查询:


编辑:如下所述,我没有注意到比较必须大于一年前

太好了,谢谢你的帮助,请看我的原创编辑post@John我对答案进行了编辑,以表明您没有筛选序列。您应该使用发票或工作站实体的属性进行筛选。非常感谢您的帮助,请查看我对原始帖子的编辑。请查看您必须提供两个日期,一个是一年前的日期,因此您的发票日期必须大于一年前的日期,不少于那太好了谢谢你的帮助请看我对原文的编辑post@John:然后在我的答案中使用第一个查询。顺便说一句:你似乎混淆了大于>和小于Ok谢谢丹尼尔…虽然如果我想要一个在2012年1月24日之前的约会不应该是@John:的确,这是正确的。现在我引用你的编辑:发票日期今天正好超过一年…..所以任何注明日期的内容都非常感谢你的帮助请查看我对原始帖子的编辑--Iv尝试过…DateTime one yearago=DateTime.now.subtract new timespan 365,0,0,0。。但同样的结果
DateTime timeNow = DateTime.Now;
DateTime timeToCompare = DateTime.Now.Subtract(new TimeSpan(365, 0, 0, 0)); ;
var selectedObject = (from workstation in db.Work_Station
                      join invoice in db.Invoices on workstation.id equals invoice.Site_Id
                      where InvoiceDate > timeToCompare
                      select workstation).Distinct().ToList();