簡體   English   中英

在數據表中的多個列上不同

[英]Distinct on multiple columns in datatable

試圖做一個SQL查詢( SELECT DISTINCT (first,second),third FROM table )會做什么,但是我正在用LINQ和一個數據SELECT DISTINCT (first,second),third FROM table來做。


編輯

SQL應該看起來像一個Mysql

select first, second, third FROM table group by first, second


DataTable secondTable = new DataTable();
secondTable.Columns.Add("name", typeof(string));
secondTable.Columns.Add("date", typeof(string));
secondTable.Columns.Add("clockIn", typeof(string));
secondTable.Columns.Add("clockOut", typeof(string));

var t4 = (from a in firstTable.AsEnumerable()
select new
{
    name = a.Field<string>("name"),
    date = a.Field<string>("date"),
    clockIn = a.Field<string>("clockIn"),
    clockOut = a.Field<string>("clockOut")
}).Distinct();

var t5 = (from a in firstTable.AsEnumerable()
select new
{
    name = a.Field<string>("name"),
    date = a.Field<string>("date")
}).Distinct();

var t6 = (from d in t5
          join a in t4
          on new
          {
              d.name,
              d.date
          }
          equals new
          {
              a.name,
              a.date
          }
          select secondTable.LoadDataRow(
          new object[]
          {
               d.name,d.date,a.clockIn,a.clockOut
          }, false)).ToList();

ViewBag.Data = secondTable;

該代碼的作用是,將t4t5連接到t6而沒有任何排除。 雖然我的願望是所有的行t4存在於t5應該加入t6上(名稱,日期),並從所有行的基礎上, t5不存在在t4應被排除在外。 誰能幫忙嗎?

從您的評論中,您可以按所需字段分組,然后進行分組。

您可以按時鍾輸入或時鍾輸出進行排序,以獲得較少的“隨機”結果。

var t6 = firstTable.AsEnumerable()
                   .GroupBy(a => new {
                                     name = a.Field<string>("name"),
                                     date = a.Field<string>("date")
                                     }
                            )
                   .Select(g => g.First())
                   //or Select(g => g.OrderBy(a => a.Field<string>("clockIn")).First()
                   .ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM