2016-10-13 8 views
0

2つのカラムのテーブルを結合しており、3つ目のカラムが一致しないレコードを見つける必要があります。Linqは、条件が等しくなく、両方のテーブルからカラムを返す必要があります

私が持っているlinqクエリは、テーブル1から正しいレコードを返しますが、2番目のテーブルから日付カラムを選択することはできません。

私は結果をグループ化しようとしましたが、「同一でない」条件に問題がありました。

表1:4SONS、112、2016年9月3日

表2:4SONS、112、2016年9月26日

だから、私はこれらのレコードを持っています私は返すために必要なもの

は - 4SONS、112、2016年9月3日、2016年9月26日

しかし、私のクエリは、テーブル2からその日付を取得する方法なしで、4SONS、112、09/03/2016のみを返します。これらは各テーブルの唯一の3列です。

var query = from s in schedTable.AsEnumerable() 
      where s.Field<DateTime?>("AuditDate").HasValue 

      join c in completeTable.AsEnumerable() 
      on new { account = s.Field<string>("Account").ToString(), store = s.Field<string>("Store").ToString()} 
      equals new { account = c.Field<string>("Account").ToString(), store = c.Field<string>("Store").ToString() } 

      where s.Field<DateTime>("AuditDate").Date != c.Field<DateTime>("AuditDate").Date 
      select s; 

var typeD = query.ToList(); 
+1

結果が明らかにデータレコードのリストにすることはできません。クラスを作成し、 '新しいYourClassを選択{...} 'してください。または匿名のタイプ。 –

答えて

0

これは、あなたが探しているものを行います。

var query = from s in schedTable.AsEnumerable() 
        where s.Field<DateTime?>("AuditDate").HasValue 
        join c in completeTable.AsEnumerable() 
        on new { account = s.Field<string>("Account").ToString(), store = s.Field<string>("Store").ToString()} 
         equals new { account = c.Field<string>("Account").ToString(), store = c.Field<string>("Store").ToString()} 
        where s.Field<DateTime>("AuditDate").Date != c.Field<DateTime>("AuditDate") 
        select new { 
         account = s.Field<string>("Account"), 
         store = s.Field<string>("Store"), 
         sched = s.Field<DateTime>("AuditDate"), 
         comp = c.Field<DateTime>("AuditDate") 
        }; 
     var typeD = query.ToList(); 
+0

ありがとう、これです! –

関連する問題