Search code examples
c#asp.net-mvclinqentity-frameworkanonymous-methods

Filtering records with IEnumerable.Select


In ASP.NET MVC 4 project, I have a model for join (with payload):

public class LeagueMember
{
    [Key, Column(Order = 0)]
    public int MemberId { get; set; }

    [Key, Column(Order = 1)]
    public int LeagueId { get; set; }

    public bool? IsActive { get; set; }

    [Required]
    public virtual League League { get; set; }

    [Required]
    public virtual Member Member { get; set; }

}

I am trying to pull all the active members of the league. So, in League model, I created a property like this:

public virtual ICollection<LeagueMember> LeagueMembers { get; set; }

public IEnumerable<Member> GetActiveMembers
{
    get
    {
        return LeagueMembers.Select(a => a.IsActive == true ? a.Member : null);
    }
}

But it looks like it returns a collection with size equals to that of all Members (with null values for the inactive members).

Is there a better way to apply filter in anonymous method to avoid nulls?


Solution

  • Just remove your ternary condition within Select Method.

    public IEnumerable<Member> GetActiveMembers
    {
        get
        {
            return from activeMember in LeagueMembers
                   where activeMember.IsActive == true
                   select activeMember.Member;
            //return LeagueMembers.Select(a => a.IsActive == true);
        }
    }