这是我的Categories表的结构
Categories Table
--------------------------------
ID Name ParentID
1 NameOne NULL
2 NameTwo 1
3 NameThree 1
4 NameFour 1
这是我的ItemTable,它具有类别表
的引用键Items Table
--------------------------------------------
ItemID CategoryID SubCategoryID ItemName
1 1 2 ItemOne
2 1 3 ItemTwo
如何使用LINQ to entity?
加入它以获取如下例所示的唯一记录结果必须是
ItemID CategoryName SubCategoryName ItemName
-----------------------------------------------------------------------
1 NameOne NameTwo ItemOne
2 NameOne NameThree ItemTwo
答案 0 :(得分:2)
我假设你正在使用实体数据模型(.edmx文件),你从数据库中拖动了所有必要的表。
我很难给你一个确切的查询,因为我不知道你给某些参考文献和模型命名了什么。
希望这有助于您开始:
var q = from item in context.Items
select new {
ItemID = item.ItemID,
CategoryName = item.Category.Name,
SubCategoryName = item.SubCategory.Name,
ItemName = item.ItemName
};
请注意,“Category”和“SubCategory”是Items表中CategoryId和SubCategoryId对Categories表中条目的引用。因此将其替换为您在数据模型文件中命名的内容。
祝你好运!答案 1 :(得分:0)
这样的事情可能会起作用,具体取决于你如何定义实体。
var results = Entities.Items.Select( i => new { ItemID = i.ID, CategoryName = i.Category.Name, SubCategoryName = i.SubCategory.Name, ItemName = i.Name } );
答案 2 :(得分:0)
我同意@ Mouhannad的假设:
我假设你正在使用实体数据模型(.edmx文件),你从数据库中拖动了所有必要的表。
但是,如果不对,那么您可以尝试使用join,如下所示:
List<Item> items = someMethodToFillItems();
List<Category> categories = someMethodToFillCategories();
var q = (from item in items join
cat in categories on cat.Id equals item.CategoryId
subCat in categories on subCat.ParentId equals cat.Id
select new {
ItemID = item.ItemID,
CategoryName = cat.Name,
SubCategoryName = subCat.Name,
ItemName = item.ItemName
}
);