Return 如果未从 DistinctBy 中找到重复项,则为 0
Return 0 if no duplicates found from DistinctBy
我认为这会很简单,但不幸的是我找不到我正在寻找的答案。
我想要实现的是 return 一个独特的结果列表,如果它们是重复的,否则 return 0 而不是单个项目。
到目前为止我的代码是,第一个不同的应该 return 所有不同的行,然后第二个进一步过滤它们:
List<Server> serversWithBothAffinity = filteredServers
.DistinctBy(x => new { x.ServerVersion, x.ServerName, x.ServerSlot, x.ServerAffinity})
.DistinctBy(x => new {x.ServerVersion, x.ServerName, x.ServerSlot});
这个问题是,当我在列表中只有 1 个没有重复的项目时 - 此代码仍然 returns 1,当我想要它 return 0.
快乐的一天场景,当一切如我所愿时,给出以下情况:
{1.0, "ServerName1", "ServerSlotA", "Europe"}
{1.0, "ServerName1", "ServerSlotA", "Pacific"}
{1.0, "ServerName2", "ServerSlotB", "Europe"}
{1.0, "ServerName2", "ServerSlotA", "Pacific"}
结果符合预期:
{1.0, "ServerName1", "ServerSlotA"}
问题场景,给定如下:
{1.0, "ServerName1", "ServerSlotA", "Europe"}
结果不正确:
{1.0, "ServerName1", "ServerSlotA"}
预期结果:无
请帮忙。
这里不需要 MoreLINQ:
List<Server> serversWithBothAffinity = filteredServers
.GroupBy(x => new { x.ServerVersion, x.ServerName, x.ServerSlot})
.Where(g => 1 < g.Count())
.Select(g => g.First())
.ToList();
DistinctBy 的问题在于,在应用它之后,您无法判断每个项目中有多少项 'group' - 它会生成单个项目
您还可以使用漂亮的查询语法(当然,ToList 部分除外)
var serversWithBothAffinity =
from s in filteredServers
group s by new { s.ServerVersion, s.ServerName, s.ServerSlot} into g
where 1 < g.Count()
select g.First();
我认为这会很简单,但不幸的是我找不到我正在寻找的答案。 我想要实现的是 return 一个独特的结果列表,如果它们是重复的,否则 return 0 而不是单个项目。 到目前为止我的代码是,第一个不同的应该 return 所有不同的行,然后第二个进一步过滤它们:
List<Server> serversWithBothAffinity = filteredServers
.DistinctBy(x => new { x.ServerVersion, x.ServerName, x.ServerSlot, x.ServerAffinity})
.DistinctBy(x => new {x.ServerVersion, x.ServerName, x.ServerSlot});
这个问题是,当我在列表中只有 1 个没有重复的项目时 - 此代码仍然 returns 1,当我想要它 return 0.
快乐的一天场景,当一切如我所愿时,给出以下情况:
{1.0, "ServerName1", "ServerSlotA", "Europe"}
{1.0, "ServerName1", "ServerSlotA", "Pacific"}
{1.0, "ServerName2", "ServerSlotB", "Europe"}
{1.0, "ServerName2", "ServerSlotA", "Pacific"}
结果符合预期:
{1.0, "ServerName1", "ServerSlotA"}
问题场景,给定如下:
{1.0, "ServerName1", "ServerSlotA", "Europe"}
结果不正确:
{1.0, "ServerName1", "ServerSlotA"}
预期结果:无
请帮忙。
这里不需要 MoreLINQ:
List<Server> serversWithBothAffinity = filteredServers
.GroupBy(x => new { x.ServerVersion, x.ServerName, x.ServerSlot})
.Where(g => 1 < g.Count())
.Select(g => g.First())
.ToList();
DistinctBy 的问题在于,在应用它之后,您无法判断每个项目中有多少项 'group' - 它会生成单个项目
您还可以使用漂亮的查询语法(当然,ToList 部分除外)
var serversWithBothAffinity =
from s in filteredServers
group s by new { s.ServerVersion, s.ServerName, s.ServerSlot} into g
where 1 < g.Count()
select g.First();