如何从同一列表中的2个不同列获取不同的值

时间:2017-06-29 23:37:52

标签: list linq lambda

因此,从下面的代码中可以看出,我有一个名为Matches的列表对象,我希望从HomeTeam和AwayTeam中获得一个不同团队的列表。我正在尝试使用LINQ,如果我只使用HomeTeam参数或AwayTeam参数但不能同时使用它们,我可以获得不同团队的列表。

谢谢。

IElementView<Warrior>

我正在尝试做类似的事情:

result = Matches.Select(HomeTeam,AwayTeam).Distinct()。ToList();

3 个答案:

答案 0 :(得分:0)

冒着像家庭作业闻起来的风险,而不是代码。获得您的主队,联盟您的客队并对结果应用Distinct。

答案 1 :(得分:0)

所以我终于想出了这个解决方案。

请注意,现在我不仅要获得团队,还要获得团队所属的国家/地区。

public class Team
{
    public string Name { get; set; }
    public string Country { get; set; }
}

所以Union真的在这里工作,但从现在起我需要把它作为一个匿名类型...这里是代码:

List<Team>  teams =  new List<Team>();

var result = Matches.Select(x => new { Name = x.HomeTeam, Country = x.Country }).Union(Matches.Select(x => new { Name = x.AwayTeam, Country = x.Country })).ToList();

foreach (var record in result)
{
teams.Add(new Team { Name = record.Name, Country = record.Country });
}

 return teams;

我更喜欢这种方式:

List<Team> teamsResult = Matches.Select(x => new Team { Name = x.HomeTeam, Country = x.Country }).Union(Matches.Select(x => new Team { Name = x.AwayTeam, Country = x.Country })).ToList();

但是这种方式会有重复,所以我现在要坚持使用第一个例子。

你认为这是更优雅的方式吗?

谢谢。

答案 2 :(得分:0)

你可以利用GroupBy,就像这样:

if (/(.)\1{2,}/.test(str.replace('...',''))) {