【问题标题】:How to remove or get distinct values in C# LINQ query?如何在 C# LINQ 查询中删除或获取不同的值?
【发布时间】:2022-12-01 04:13:16
【问题描述】:

请找到下面的数据库数据 我已经编写了一个连接查询来连接两个表,然后根据 PhotoContestID 选择数据,但我想要唯一值 下面是连接查询及其结果

select *
from PhotoContest.ContestImageLibrary
Left Join 
PhotoContest.ContestCategories On 
PhotoContest.ContestImageLibrary.PhotoContestID = PhotoContest.ContestCategories.PhotoContestID;

正如您从数据中看到的那样,我想根据 ImageID FirstorDefault 获取唯一值。 我不想要重复的记录,例如 ImageID

我已经编写了以下代码来获取详细信息,但我得到了重复的代码。我试过在最后使用 Distinct 但没有用。

 var voteList = (from i in context.ImageLibrary
                            join p in context.ContestCategories on i.PhotoContestID equals p.PhotoContestID
                            select new VoteLists()
                            {
                                PhotoContestID = i.PhotoContestID,
                                ImageID = i.ImageID,
                                ImageCaption = i.ImageCaption,
                                ImageName = i.ImageName,
                                categoryName = p.categoryName,
                                isImageAccepted = i.isImageAccepted,
                                catID = p.Id,
                                empID = i.empID,
                                votingType = p.votingType
                            }).Where(x => x.PhotoContestID == id).ToList();

            foreach (var image in voteList)
            {
                var f = Url.Content(System.IO.Path.Combine("~/Photos", image.ImageName));
                image.imageUrl = f;

            }

我应该在我的后端准确地写什么来获得所需的唯一结果,或者我可能无法获得基于 ImageID 的唯一值。

谢谢

【问题讨论】:

  • 那么所有其他字段呢(它们并不是真正重复的,只是 imageID 本身)。你用那些做什么?

标签: c# .net sql-server asp.net-mvc linq


【解决方案1】:

在SQL中添加SELECT DISTINCT <rest of query>或者在你的c#中在.ToList()之前添加一个.Distinct()

【讨论】:

  • 你的意思是说,Select Distinct new VoteList(){ PhotoContestID = i.PhotoContestID, ImageID = i.ImageID, ....... }).Where(x => x.PhotoContestID == id).Distinct() .ToList(); ---------------------- 但它显示错误,当我尝试在选择单词后写不同的
【解决方案2】:

问题是多个类别与每个图像匹配。

我会说您需要在键中使用包含所有重复字段的 GroupBy,这将迫使您指定如何管理值部分中的多个匹配类别。

【讨论】:

  • 是的,即使我想通过 GroupBy 获取详细信息,但我应该如何在 C# LINQ 查询中编写,抱歉我是新手。
猜你喜欢
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多