Linq选择不按预期运行

时间:2016-08-13 10:20:20

标签: c# linq

我有一个Board,其中包含OverallPartyResults的列表。

OverallPartyResults有一个属性PartyName,在列表中应该是不同的。

  

我正在尝试编写用于将OverallPartyResults添加到列表的逻辑如果电路板没有包含具有相同代码的OverallPartyResults,则应该只添加新的OverallPartyResults

我写的linq表达式是:

if (!Board.Select(i => i.PartyCode).Contains(party.PartyCode))
{
      var newPartyResult = new OverallPartyResults()
      {
             PartyCode = party.PartyCode.Trim(),
             NumberOfSeats = seatNumber 

      };
      Board.Add(newPartyResult);
}

表达式错误,因为我在列表中使用相同代码获取OverallPartyResults - 有人能看到我出错的地方吗?

1 个答案:

答案 0 :(得分:3)

我怀疑Trim()是值得责备的人。如果您在PartyCode的开头或结尾有空格,那么您将获得重复PartyCode s

像这样改写:

if (!Board.Any(i => i.PartyCode == party.PartyCode.Trim()))
{
      var newPartyResult = new OverallPartyResults()
      {
             PartyCode = party.PartyCode.Trim(),
             NumberOfSeats = seatNumber 

      };
      Board.Add(newPartyResult);
}

使用Any()代替Select(...).Contains()。您正在从数据库中撤回所有PartyCode(如果您使用的是LINQ to BD)。 Any转换为WHERE EXISTS女巫更好(表现明智)。