我正在使用 Entity Framework Core 5.0.6 版本開發 .NET 5 CORE 應用程式。
最終,我需要對我的記錄進行分組。在EF CORE 3中,我能夠在應用ToList()之前在腳本上使用group by,但我相信在EF Core 5中是不可能的。因此,為了實作分組,我打算先拉出記錄,然后在上面應用分組。除非有更好的方法。
var contraventionImages = (from contravention in db. Contraventions
join contraventionGuideImage in db.ContraventionGuideImages on contravention。 equals contraventionGuideImage.ContraventionId into con_guide_img.
from contraventionGuideImages in con_guide_img.DefaultIfEmpty()
加入圖片 在 db.GuideImages 在 contraventionGuideImages。 GuideImageId equals image.GuideImageId into guide_img.
from guideImages in guide_img.DefaultIfEmpty()
where contravention.ContraventionId == ContraventionId
select new ContraventionGuideImageView
{
Contravention = contravention,
ContraventionGuideImages = contraventionGuideImages,
GuideImages = guideImages
})
.FirstOrDefault()
;
所以我已經提取了記錄,用FirstOrDefault()結束了腳本,現在在第二個腳本中,我試圖檢查和分組Item,但無法做到這一點。我無法在上一步的查詢結果上應用select
。 public class ContraventionGuideImageView
{
public Contravention Contravention { get; set; }
public ContraventionGuideImage ContraventionGuideImages { get; set; }
public GuideImage GuideImages { get; set; }
uj5u.com熱心網友回復:
好的,編輯后看得更清楚了。看起來你的困惑是,在選擇了第一條記錄后,你試圖對該記錄做進一步的查詢:
通過呼叫FirstOrDefault,你得到了一個物件(在你的例子中是ContraventionGuideImageView);你需要在做第一個或默認的查詢之前對可查詢的物件做任何分組/排序,例如:
var contraventionImages = (from contravention in db.Contraventions
join contraventionGuideImage in db.ContraventionGuideImages on contravention。 equals contraventionGuideImage.ContraventionId into con_guide_img。
from contraventionGuideImages in con_guide_img.DefaultIfEmpty()
加入圖片 在 db.GuideImages 在 contraventionGuideImages。 GuideImageId equals image.GuideImageId into guide_img.
from guideImages in guide_img.DefaultIfEmpty()
where contravention.ContraventionId == ContraventionId
select new ContraventionGuideImageView
{
Contravention = contravention,
ContraventionGuideImages = contraventionGuideImages,
GuideImages = guideImages
})
.ToList() //應該不會有什么影響,但為了讓毒販子看到這個程序。
.GroupBy(x => x.contravention)
.FirstOrDefault()。
但是,這個查詢非常復雜,我認為它作為一個存盤程序會更好。
uj5u.com熱心網友回復:
找到了答案;
選項A:
var t7 = (from contravention in db.Contraventions
.Include(x => x.ContraventionGuideImages)
.ThenInclude(x => x.GuideImage)
where contravention.ContraventionId == ContraventionId
selectnew
{
contravention = contravention,
GuideImages = contravention.ContraventionGuideImages.Select(x => x.GuideImage)
}).FirstOrDefault()。
選項B:
var contraventionImages = (from contravention in db. Contraventions
join contraventionGuideImage in db.ContraventionGuideImages on contravention。 equals contraventionGuideImage.ContraventionId into con_guide_img。
from contraventionGuideImages in con_guide_img.DefaultIfEmpty()
加入圖片 在 db.GuideImages 在 contraventionGuideImages。 GuideImageId equals image.GuideImageId into guide_img.
from guideImages in guide_img.DefaultIfEmpty()
where contravention.ContraventionId == ContraventionId
select new { contravention, contraventionGuideImages, guideImages }).ToList()。
var guideImagesList = (from contravention in contraventionImages.Select(x => x.contravention)
group contraventionImages.Select(x => x.guideImages ) by contravention into groupedItem
選擇 新
{
contravention = groupedItem.Key,
contraventionGuideImages = groupedItem.ToList()
}).FirstOrDefault()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/310058.html
標籤:

