2011-07-01 6 views
2

私は、ドロップダウンリストのデータソースとして使用されているデータベーステーブルに関連付けられている外部キーがデータベーステーブルに含まれているデータソースにバインドされたgridviewを持っています。C#で2つのデータソースを比較する

foreignKeyIdgridview.datasourceに存在する場合は、dropdownlist.datasourceから削除します。

私は何を望んでいるのかをより明確にするために、ユーザはgridview(したがってデータソース)にエントリを追加することができますが、ユーザがもっと多くのことをできるようにしたくありません特定のタイプのエントリは1つです。 linqクエリがこれを行う方法はありますか?ここで

擬似コード(私はRemoveObjectsを(知っていることに注意してください)が無効方法である)

var query = DataContext.Items.Where(item => item.TypeId == selectedTypeId); 
dropDownList.DataSource.RemoveObjects(query); 

はので、多分、私はないにここで何かを行うことができ、私はドロップダウンリストをバインドする方法であるとの項目を取得既に存在するTypeId?

dropDownList.DataSource = DataContext.Items.Select(items => new 
       { 
        items.Name, 
        items.TypeId, 
       }).ToList(); 

任意の提案や回答が素晴らしいでしょう。

+0

を使用してみましたか動的なタイプのようですが、プロパティ名がありません! –

答えて

5

あなたがオブジェクトの性質はあなたがDataSourceを割り当てるときに、あなたが選択して作成しているとは何ですか?except

dropDownList.DataSource.Except(query) 
+0

dropDownListにバインドされたアイテムは動的な型であり、DataContext.Items内のアイテムの型ではないため、これは機能しません。だから仕事をしないことを除いて。 –

+1

@valipourデフォルトの等価比較子に依存します。また、独自のIEqualityComparerを実装して、exceptを使用して他のオプションよりも望ましい場合は、それを渡すこともできます。おそらく別のオプションを追加したいと思うかもしれません。 –

+0

データソース項目を(動的ではなく)名前付きの型として定義して、より透明にし、明示的に動作させることを除いて定義します。 –

関連する問題