2016-05-11 3 views
0

SQLクエリ(SELECT DISTINCT (first,second),third FROM table)に何をしようとしていますが、LINQとデータテーブルを使用しています。データテーブル内の複数の列で異なる


EDIT

SQLは、このコードは、それがにt4t5に参加しているされてやっている何の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; 

のようになります。除外なし。私が望むのは、t4の行はすべてt5にあり、(名前、日付)に基づいてt6と結合し、に存在しないすべての行は除外すべきです。誰でも助けてくれますか?

+0

「firstTable」はどこから来たのですか? – KaeL

+0

@ KaeL 'firstTable'は元のテーブルです。 – Jogi

+0

@ KaeLデバッグ中に、私は二重チェックしました、 't4'と' t5'はそれらの中に所望のレコードを持っています。私は 't6'で何か間違っているだけです。 – Jogi

答えて

1

あなたのコメントから、あなたは単に希望のフィールドでグループ化し、グループ化された結果を取ることができます。

clockinまたはclockoutで注文すると、「ランダム」な結果が少なくなることがあります。

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(); 
+0

答えをありがとう。 'a.Field (" name ")'と 'a.Field (" name ")に赤いエラーラインがあります。 無効な匿名型メンバー宣言子です。匿名型メンバーは、メンバー登録、単純な名前またはメンバーアクセスで宣言する必要があります。 – Jogi

+0

@RehanKhanが編集しましたが、私はデータテーブルでは十分に機能しません;) –

+0

Althaus。とった。あなたの答えを修正したので、あなたのコメントを削除してください。ありがとう – Jogi

関連する問題