Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在交错数组中查找唯一值_C#_Linq_Arrays_Jagged Arrays - Fatal编程技术网

C# 如何在交错数组中查找唯一值

C# 如何在交错数组中查找唯一值,c#,linq,arrays,jagged-arrays,C#,Linq,Arrays,Jagged Arrays,我想知道如何计算锯齿数组中唯一值的数量 “我的域”对象包含具有空格分隔值的字符串属性 class MyObject { string MyProperty; //e.g = "v1 v2 v3" } 给定MyObject的列表,如何确定唯一值的数量 以下linq代码返回一个交错数组值数组。一个解决方案是存储一个临时的单个项目数组,在每个交错数组中循环,如果值不存在,则添加它们。然后,一个简单的计数将返回唯一数量的值。然而,我想知道是否有更好的解决办法 db.MyObjects.Wher

我想知道如何计算锯齿数组中唯一值的数量

“我的域”对象包含具有空格分隔值的字符串属性

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" }
从所有值中,唯一项为v1v2v3v4v5

唯一项的总数为5


是否有一种解决方案(可能使用linq)只返回唯一值或返回唯一值的数目?

是的,使用linq这非常简单。首先使用将锯齿状数组展平为包含所有值的
IEnumerable
,然后调用仅选择唯一值:

IEnumerable<string> uniqueValues = array.SelectMany(x => x).Distinct();

查询表达式方法是

var query = (from arr in array
             from value in arr
             select value).Distinct();

仅供读者参考…这个答案和MarkByers的答案实际上是同一件事,但语法不同。基本答案是“选择多个”。)
var query = (from arr in array
             from value in arr
             select value).Distinct();