2011-12-20 7 views
3

Listのcritiraに適合しない行を削除してDataSet.Tablesをクエンジングするときに問題が発生します。テーブルにリスト内の項目が含まれていないDataTableをフィルタリングします。<string>

//This is my list 
var values = new List<string> {"Test", "Test2"}; 

// Now I just query the DataSet for anything that doesnt match this list 
var query = from x in ds.Tables[0].AsEnumerable() 
      from b in values 
      where !x.Field<string>("ColumnName").Contains(b) 
      select x; 

これは結果を返しますが、同じ行の2つのxセットを返しています(結合がないために仮定します)。

これらの行のDistinct値を取得するにはどうすればよいですか?

答えて

7

は、それはあなたがおそらくしたいように聞こえる:

var query = from x in ds.Tables[0].AsEnumerable() 
      where !values.Any(b => x.Field<string>("ColumnName").Contains(b)) 
      select x; 

言い換えれば、「ColumnNameに」フィールドの値がvaluesの値のいずれかに存在しないすべての行を見つけます。

+0

ありがとう、私が後だった正確に何のthats。 –

0

あなたが探しているのは、 ".Contains"の代わりにDistinctまたはIntersectのメソッドでしょうか?

0

あなたのvaluesリストに参加する必要がありません。

var query = from x in ds.Tables[0].AsEnumerable() 
     where !values.Any(str => x.Field<string>("ColumnName").Contains(str)) 
     select x; 
関連する問題