我有大量的字符串列表。我想知道列表是否包含任何正确重复5次的字符串。C#查找列表是否包含重复5次的项目
如果项目重复6次或更多,我不想知道。
我认为他们必须是一个更好的方法,而不是通过列表中的每一个字符串来计算多少个实例?
他们是一种简单的LINQ方式吗?
我有大量的字符串列表。我想知道列表是否包含任何正确重复5次的字符串。C#查找列表是否包含重复5次的项目
如果项目重复6次或更多,我不想知道。
我认为他们必须是一个更好的方法,而不是通过列表中的每一个字符串来计算多少个实例?
他们是一种简单的LINQ方式吗?
没有什么比这更好performancewise,因为你显然需要遍历整个列表中至少做一次计数测试。然而,在LINQ中,你可以用更少的代码获得,这是事实。这样的事情应该做的伎俩:
var listOfFiveTimers = list.GroupBy(s => s)
.Where(g => g.Count() == 5)
.Select(g => g.Key)
.ToList();
stringListName.GroupBy(x => x).Any(x => x.Count() == 5);
使用
var stringListName = new string[] { "a", "a", "a", "a", "a", "b" };
List<string> l = new List<string>();
l.Add("a");
l.Add("a");
l.Add("a");
l.Add("b");
l.Add("b");
l.Add("b");
l.Add("b");
l.Add("b");
l.Add("c");
l.Add("c");
l.Add("c");
l.Add("c");
l.Add("c");
l.Add("c");
l.GroupBy
(
x => x
)
.Select
(
x =>
new
{
x.Key,
count = x.Count()
}
)
.Where
(
x => x.count==5
);
bool duplicated5times = list.GroupBy(x=>x).Any(x=>x.Count() == 5);
这不是漂亮,但是这将做到这
static void Main(string[] args)
{
var items = new[] {1, 1, 1, 1, 1, 3, 2, 1, 5, 2};
var over = items.Distinct().ToList().Where(i=>items.Where(it => it == i).Count() > 5);
Console.Read();
}
“是他们的一个简单的LINQ的方式来做到这一点?”当然有,但并不比一一列出清单更“好”。 – dasblinkenlight