1

私は2つのテーブルを持っています:フィールド付きのアイテムとカテゴリ(擬似コード):

Item
----------
int ItemId
Category Category
(etc...)

Category
----------
string Name
bool IsSelected
(etc...)

カテゴリにフラグIsSelected=trueがあるすべてのアイテムをDBから取得したいと思います。

最初にテストするために、アイテムを作成します。

Category category = new Category() { Name = "test_name", IsSelected = true };
db.CategoriesTable.InsertOnSubmit(category);
db.SubmitChanges();
for(int i = 0; i < 10; i++) {
    Item item = new Item() { Category = category };
    db.ItemsTable.InsertOnSubmit(item);
}
db.SubmitChanges();

これで、IsSelected=trueのカテゴリを持つアイテムが10個あります。

IsSelected == trueのカテゴリを持つすべてのアイテムを取得する場合は、次のように記述します。

Array<Item> items = ItemsTable.Where(f => f.Category.IsSelected).ToArray();

そして、10個のアイテムを期待していましたが、最初のアイテムは1個しかありませんでした。なんで?テーブルのデータを確認しましたが、すべてのアイテムが同じカテゴリであるため、クエリが間違っていると思います...

4

0 に答える 0