【发布时间】:2016-03-15 12:21:12
【问题描述】:
我有格式为 (dd/mm/yyyy) 的日期详细信息,例如,
表 #1
id Name date User
--------------------------------
1 xxx 01/01/2016 user1
2 yyy 01/02/2016 user2
3 aaa 02/03/2016 user1
表#2
id Name date
--------------------
1 xxx 07/01/2016
2 xxx 09/01/2016
3 yyy 05/02/2016
4. aaa 04/03/2016
编辑 1: 逻辑是,第一次出现在Table2中的xxx意味着,它从Table1中获取日期来计算日差。对于下一次出现 xxx 值意味着,它从 Table2(不是 table1)中获取日期,因为 Table2 已经在该表中具有值。因此,将单独使用 Table2 计算天差。其他值也一样。 编辑 2: 实际上,我需要获取该值的日期差异。如果名称是第一次出现,我必须使用 Table1 来获取日期差异。并从 Table2 中获取 Dtae 差异,如果之前出现过名称。 我将“名称”字段设置为 UNIQUE 结果应该是这样的,
user Name DateDifference
------------------------------------
user1 xxx 6 (07/01/2016 - 01/01/2016)
user1 xxx 2 (07/01/2016 - 09/01/2016)
user2 yyy 4 (01/02/2016 - 05/02/2016)
user1 aaa 2 (02/03/2016 - 04/03/2016)
我试过的LINQ查询是,
var query = (from item1 in Table1
join item2 in Table1 on item1.Name equals item2.Name
where item2.Date > item1.Date
join origin in Table2 on item1.Name equals origin.Name
where // condition
group new { item1,item2 } by new { item1.Name,item1.Date } into grp
select new
{
DayDiff = DbFunctions.DiffDays(grp.Key.Date, grp.Min(d => d.item2.Date)),
}
).ToList();
但我无法得到预期的结果。我也知道这个问题,How to get the date difference by joining two tables?,但最后他们没有以正确的 LINQ 查询选项结束它。
我的问题与 How to get the date difference by joining two tables? 有何不同? 答案在 SQL 中。我需要在 LINQ 中对其进行编码。
【问题讨论】:
-
我会参考的,谢谢
-
我的问题与如何通过加入两个表来获取日期差异有何不同? ?答案在 SQL 中。我需要在 LINQ 中对其进行编码。
-
不清楚:在结果表中有两行名称为 xxx,那么对:01/01/2016 - 09/01/2016,是否需要?你在哪里得到 01/01/2016 的值,你的意思是 01/01/2015 吗?更仔细地解释获得期望结果的逻辑。
-
我无法得到预期的结果那么做什么你得到了什么?