我想知道如何计算锯齿状数组中唯一值的数量。
我的域对象包含一个具有空格分隔值的字符串属性。
class MyObject
{
string MyProperty; //e.g = "v1 v2 v3"
}
给定MyObject的列表,我如何确定唯一值的数量?
以下 linq 代码返回一个由锯齿状数组值组成的数组。一种解决方案是存储一个临时的单个项目数组,循环遍历每个锯齿状数组,如果值不存在,则添加它们。然后一个简单的计数将返回唯一数量的值。但是,想知道是否有更好的解决方案。
db.MyObjects.Where(t => !String.IsNullOrEmpty(t.MyProperty))
.Select(t => t.Categories.Split(new char[] { ' ' },
StringSplitOptions.RemoveEmptyEntries))
.ToArray()
下面是一个更易读的例子:
array[0] = { "v1", "v2", "v3" }
array[1] = { "v1" }
array[2] = { "v4", "v2" }
array[3] = { "v1", "v5" }
从所有值中,唯一项是v1、v2、v3、v4、v5。
唯一项目的总数为5。
是否有可能使用 linq 的解决方案,它仅返回唯一值或返回唯一值的数量?