gpt4 book ai didi

C# Entity Framework : How to return a specified type after group. 加入?

转载 作者:太空宇宙 更新时间:2023-11-03 19:46:01 26 4
gpt4 key购买 nike

我正在处理两种特定类型的对象:

食品类型食品

结构:FoodType 有一个 FoodItems 列表(ft 是 FoodType,fi 是 FoodItem)( Entity Framework 类型))

我想根据这个 LINQ 查询返回一个 IList:

var list = foodTypes.GroupJoin
(fullList, ft => ft.Id, fi => fi.FoodTypeId, (ft, f) => new {ft, f})
.Where(g => g.f.Any()).ToList() as IList<FoodType>;

输出看起来像这样:

enter image description here

知道这实际上是什么返回类型吗?而且..我怎样才能改变它以使其成为我想要的返回类型?

完整方法:

public static void GetMenuFoodItems2(int menuId)
{
using (var context = new MSEntities())
{
Menu menu =
context.Menus.Include("FoodTypes").Include("FoodItems").FirstOrDefault(m => m.Id == menuId);

var singleFoodItems = menu.FoodItems;
var foodTypeItems = menu.FoodTypes.SelectMany(ft => ft.FoodItems);
var fullList = singleFoodItems.Union(foodTypeItems).ToList();

var foodTypes = context.FoodTypes.ToList();

var list = foodTypes.GroupJoin
(fullList, ft => ft.Id, fi => fi.FoodTypeId, (ft, f) => new {ft, f})
.Where(g => g.f.Any()).ToList();

}
}

这是 EDMX 的图像:

enter image description here

最佳答案

它的返回类型是 IEnumerable<SomeAnonymousType> ,具有两个属性的匿名类型 - ft类型 FoodType , 和 f类型 IEnumerable<FoodItem> .

如果要降f因为你想要的只是看到它是非空的,所以添加一个 Select提取 FoodType来自对:

var list = foodTypes.GroupJoin
(fullList, ft => ft.Id, fi => fi.FoodTypeId, (ft, f) => new {ft, f})
.Where(g => g.f.Any())
.Select(p => p.ft)
.ToList();

如果你想保留FoodItem s 连同 FoodType ,创建一个新类将两者绑定(bind)在一起。不要重复使用导航属性 FoodItems .

class FoodTypeItems {
public FoodType {get;set;}
public IList<FoodItem> FoodItems {get;set;}
}
...
var list = foodTypes.GroupJoin
(fullList, ft => ft.Id, fi => fi.FoodTypeId, (ft, f) => FoodTypeItems {
FoodType = ft
, FoodItems = f.ToList()}
).Where(g => g.FoodItems.Any())
.ToList();

关于C# Entity Framework : How to return a specified type after group. 加入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45516580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com