0

ライン テーブルとタグ テーブルがあります。各行には、タグ テーブルからの複数のタグが含まれる場合があります。すべてのタグを含むチェックリストを作成しようとしており、その行にそのタグが含まれているかどうかを示すチェックボックスがあります。

2列のデータグリッドビューを設定しました。1 つは Name にバインドされ、もう 1 つは IsTagged にバインドされたチェックボックスセル

これにプロジェクションを使用しようとしています:

-> line comes into constructor
var tagsList = from t in rs.Tags select new { Name = t.Name, IsTagged = line.Tags.Where(x => x.Name == t.Name).Any() };
dgvTags.DataSource = tagsList;

私のエンティティ図は以下の通りです:

ここに画像の説明を入力

アップデート :

私はすべてをやり直して、バックデータベースを2005年から2008r2にアップグレードしました。今は動作しているようですが、次のエラーが発生します...クラッシュはしませんが、データグリッドにアイテムは表示されません。

ここに画像の説明を入力

4

1 に答える 1

0

問題は、linq-to-entities クエリで line パラメータのコレクションを使用しているためだと思います。

次のようなプリミティブ型のみを使用するようにクエリを書き直してみます。

var tagNames = line.Tags.Select(x => x.Name).ToList();
var tagsList = from t in rs.Tags 
               join n in tagNames on t.Name equals n into tags
               select new 
               {
                 Name = t.Name, 
                 IsTagged = tags.Any() 
               };
于 2012-04-20T16:36:23.770 に答える