首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从两个dataTables中选择Linq到SQL中的distinct和date

从两个dataTables中选择Linq到SQL中的distinct和date
EN

Stack Overflow用户
提问于 2014-09-23 04:03:30
回答 5查看 827关注 0票数 1

我尝试了下面的linq到sql查询

代码语言:javascript
复制
 DataTable StudentTable=StudentTimeReport.Tables[0];
 DataTable RoundEndDateTable=RoundEndDates.Tables[0];
          var studentData = from student in StudentTable.AsEnumerable()
                              join Rounds in RoundEndDateTable.AsEnumerable() on student.Field<string>("strActivityName") equals Rounds.Field<string>("strActivityName")
                              select student;

这两种数据如下

RoundEndDateTable

代码语言:javascript
复制
ActionName          End Date
SQLs              8/31/2014 0:00
Gas Lekage        9/18/2014 0:00
Test Activity     9/20/2014 0:00

StudentTable

代码语言:javascript
复制
ActionName          Player ID    Completed Date
Gas Lekage            810045    9/16/2014 14:38
Test Activity         810015    9/16/2014 14:39

我需要得到球员的日期差,如下所示

代码语言:javascript
复制
Player ID   Action Name     Date difference
 810015     Gas leakage       2
 810015     Test Activity     4

我不知道如何使用Linq到SQL获得具有日期差异的上表。

EN

回答 5

Stack Overflow用户

发布于 2014-09-23 04:12:39

如果我正确地理解了您的问题,您需要ActionName映射的两个表,并且您希望为每个玩家找出CompletedDateDate之间的天数差异。

代码语言:javascript
复制
SELECT PlayerID, ActionName, MAX(DATEDIFF(DAY, Table1.Date, Table2.CompletedDate)) AS DateDifference
FROM Table1
    INNER JOIN Table2 ON Table1.ActionName = Table2.ActionName
GROUP BY PlayerID, ActionName

为了确保每个球员都有一个结果,正如你会注意到的,我采取最大的差别。这当然是你的决定,无论你是否需要,但我认为你做到了,考虑到你的问题的标题。

票数 1
EN

Stack Overflow用户

发布于 2014-09-23 04:12:47

我们可以使用datediff函数

代码语言:javascript
复制
select B.ActionName, 
       B.PlayerId,  
       DATEDIFF(day, A.Date, B.completedDate) as difference
FROM B
INNER JOIN A
ON B.ActionName = A.ActionName
票数 1
EN

Stack Overflow用户

发布于 2014-09-23 04:57:18

代码语言:javascript
复制
var studentData = from redt in RoundEndDateTable
             join st in StudentTable on redt.ActionName equals st.ActionName
             select new
{
    st.PlayerId,
    st.ActionName,
    ((DateTime)st.Completed - (DateTime)redt.Date).TotalDays
}.ToList();

请检查一下这个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25986688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档