gpt4 book ai didi

c# - 每种类型的最新记录?

转载 作者:行者123 更新时间:2023-11-30 22:28:46 25 4
gpt4 key购买 nike

我的实体数据模型中有两个表(从旧数据库转换而来)

实体 1:Food_I_Have_In_Fridge:

Food  | Category
---------------
Apple | Fruit
Beef | Meat
Tomato| Veggie
Pork | Meat
Bacon | Meat
Orange| Fruit
Carrot| Veggie

实体 2:我吃的食物:

Date | Food
------------
01/01| Apple
01/01| Beef
01/02| Pork
01/03| Orange
01/04| Tomato

我想生成一个列表,列出我最近吃的东西,并按食物类别分类。输出如下:

Categ| Food
-----------
Meat | Pork
Fruit| Orange
Veggi| Tomato

我在下面有等效的 sql 代码,但是因为我们完全放弃了 sql,所以我试图通过 Entity Framework 实现以下目标。

with FW as (
select a.[Date], f.category, a.food, a.date
from
[Food_I_ate] a
inner join
[Food_I_Have_In_Fridge] f on a.Food = f.Food
)
select
FW2.category,
FW2.Food,
FW2.Date
from
(select FW.category, max(fw.ix) as maxix
from FW group by FW.category) FW
inner join
FW FW2 on FW2.ix = FW.maxix and FW2.category = FW.category

我想知道如何使用 Entity Framework 实现这一点?

最佳答案

试试这个,假设您的实体是 db.FoodIAtedb.FoodInFridge(喜欢表名!):

var food = (from fif in db.FoodInFridge
join fia in db.FoodIAte on fif.Food equals fia.Food
select new
{
Food = fif.Food,
Category = fif.Category,
Date = fia.Date
})
.OrderByDescending(f => f.Date)
.ToList()

这样你就可以按照食用日期的顺序排列食物,最近的排在最前面。然后,如果你想要其中的前三名,你可以这样做(确保你检查食物列表是否与你要吃的数字更长/相同,否则它会死!):

var topFood = food.Take(3).ToList();

关于c# - 每种类型的最新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10625484/

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