Linq基于内部集合保留和过滤集合

时间:2016-05-01 16:41:21

标签: c# linq list lambda

如果我有以下

public class Segment
    {
        private string sale;
        private IEnumerable<string> offers;

        // Properties for these

        // ctor

这是示例数据

var segment1 = new Segment("USD" new List<string>{"USD","ANZ"});
var segment2 =  new Segment1("GBP" new List<string>{"USD","ANZ"});
var segments = new List<Segment>{ segment1, segment2};

我想获得一个细分过滤器列表,其中任何在销售中具有相同价值的细分受到删除

我该怎么做?

这是我到目前为止所做的但是类型不正确

var _filtered = segments.Select(
    segment =>
        segment.Offers.Where(offer => offer != segment.Sale));

结果应为

细分列表

列表将是:

//注意美元已删除

segment1 =&#34; USD&#34;,{&#34; ANZ&#34;}

segment2 =&#34; GBP&#34;,{&#34; USD&#34;,&#34; ANZ&#34;}

2 个答案:

答案 0 :(得分:0)

我没有经过测试,但是:

var _filtered = segments.Select(x => 
       new Segment(x.Sale, x.Offers.Where(y => !y.Contains(x.Sale)))).ToList();

在这里小提琴:https://dotnetfiddle.net/rWOCZi

结果:

  

USD - &gt; ANZ

     

GBP - &gt; USD,ANZ

答案 1 :(得分:0)

如果我理解你,你需要以下内容:

var _filtered = segments.Select(
    segment => new Segment(segment.Sale, segment.Offers.Where(o => o != segment.Sale).ToList());
相关问题