【问题标题】:De-duplicate for each loop c# [duplicate]为每个循环c#重复数据删除[重复]
【发布时间】:2017-12-22 00:25:37
【问题描述】:

我有一个 foreach 循环,它返回如下内容:

value 1
value 1
value 1
value 2
value 2
value 2
value 2

我需要获取该列表,但只获取每种类型的第一个。所以,

value 1
value 2

下面是我的代码。

<div>
    @foreach (var publishedVideo in allVideos)
    {
        <p>@publishedVideo.GetPropertyValue("segment")</p>
    }
</div>

如何对列表进行重复数据删除?

【问题讨论】:

  • allVideos.Distinct() 也许? (如果您的视频适当地实现了平等......)
  • De-duplicate for each loop c# [duplicate]我喜欢这个标题。
  • @Flater 在苏维埃俄罗斯,关于复制的问题会重复你。
  • 试试@foreach(var seg in allVideos.Select(a =&gt; a.GetPropertyValue("segment")).Distinct()) { &lt;p&gt;@seg&lt;/p&gt; }
  • @ElliottJames If I understood the answer I wouldn't have asked the question 如果您未指定您已经尝试过该选项,我们将无法拨打该电话。这就是为什么展示你的工作很重要,而不是仅仅寻求解决方案。

标签: c# asp.net-core-mvc


【解决方案1】:

假设你的类没有实现相等比较器(因此Distinct 不起作用),你可以使用这个:

<div>
    @{ 
        var nonDuplicatedVideos = allVideos.
            .Select(x => x.GetPropertyValue("segment"))
            .Distinct();
    }
    @foreach (var publishedVideo in nonDuplicatedVideos)
    {
        <p>@publishedVideo</p>
    }
</div>

【讨论】:

  • 感谢卡米洛回答问题。 @mjwills - 为将问题标记为重复而欢呼。虽然它是重复的,但显然这两个答案是不同的。而“重复”的答案并没有解决我的问题。太棒了。再次感谢卡米洛
  • 仅供参考,这里不需要ToList
  • @juharr 是的,我知道,我只是发现 ToList 更易读。
猜你喜欢
  • 1970-01-01
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
相关资源
最近更新 更多