私は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個しかありませんでした。なんで?テーブルのデータを確認しましたが、すべてのアイテムが同じカテゴリであるため、クエリが間違っていると思います...