代码之家  ›  专栏  ›  技术社区  ›  Laziale

检查字符串列表是否包含对象属性值,以及是否将其从字符串列表中删除

  •  0
  • Laziale  · 技术社区  · 11 年前

    我有以下字符串列表:

    List<string> clubs = dropdownSelectedvalue.Split(',').ToList();
    

    例如,值为:125512332233。现在我有一个对象,它的属性与俱乐部列表中的值相同。我想实现的是从现有的属性中清除俱乐部列表,以防id在列表中,只留下不存在的id。

    这是一个对象:

    public class Clubs
    {
        public int? ClubId { get; set; }    
        public string ClubName { get; set; }
    }
    

    是否有任何linq命令或类似命令可以用于此问题?

    添加的代码:

    List<string> newClubs = clubs.Remove(s => Club.ClubId.ToString().Equals(clubs));
    

    像这样的事情,但还没有完成,我已经到了那个地步。

    每个请求添加的附加代码:

    List<Clubs> Clubs = Clubs.LoadAll();
    foreach (Clubs club in Clubs)
    {
        var dropdownSelectedvalue = values[sponsor.WebUserId.Value.ToString()];
        List<string> clubs = dropdownSelectedvalue.Split(',').ToList();             
        List<string> newClubs = ?                
    }
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   D Stanley    11 年前

    L1:给我所有我的俱乐部ID列表中不包含俱乐部ID的俱乐部 ClubId

    线性:

    var query = clubList.Where(c => !clubs.Contains(c.ClubID));
    
        2
  •  1
  •   Ian Mercer    11 年前

    最可读的方式是:-

    var newClubs = clubs.Except(allClubs).ToList();
    

    你会暗示 IEquatable<Club> 在你的俱乐部课程上。

    看见 http://msdn.microsoft.com/en-us/library/vstudio/bb300779(v=vs.100).aspx

    或者,如果你只想在字符串中交易,将你的allClubs列表投射到俱乐部名称(使用 Select )然后使用 Except 在琴弦上。