linQ内部条件

Hel*_*Out 3 c# linq

我有以下对象:

public class Result
{
    public List<Recomendation> Recomendations { get; set; }
}

public class Recomendation
{
    public List<Segment> Segments { get; set; }
}

public class Segment
{
    public Leg OutBound { get; set; }  
    public Leg InBound { get; set; }   
}

public class Leg
{
    public TimeSpan TotalTime { get; set; }
    public string Carrier { get; set; }
    public int RefNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个清单叫做 recommendations

我需要这样做:

  • recommendations按出站对象或入站对象中的中出现的字符串 arr进行 过滤Carrier。我尝试这样做:

单独搜索入站:

var filteredList = recommendations.Where( r=>r.Segments.Any(x => x.InBound.Carrier.Contains(arr))).ToList();
Run Code Online (Sandbox Code Playgroud)

或单独搜索出站:

var filteredList = recommendations.Where( r=>r.Segments.Any(x => x.OutBound.Carrier.Contains(arr))).ToList();
Run Code Online (Sandbox Code Playgroud)

我要搜索的字符串出现arrBOTH入站和出站。

问题有时是InBound可以为null或OutBound可以为null。我希望我的linQ在这两种情况下都能工作。

rav*_*ven 5

您需要确保当Inbound或Outbound为null时代码不会中断。

var filteredList = recommendations.Where( r=>r.Segments.Any(x =>  ( x.OutBound != null && x.OutBound.Carrier.Contains(arr)) || (x.Inbound != null && x.InBound.Carrier.Contains(arr))).ToList();
Run Code Online (Sandbox Code Playgroud)