Хотелось бы узнать, как подсчитать количество уникальных значений в зубчатом массиве.
Мой объект домена содержит строковое свойство, которое имеет значения, разделенные пробелом.
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, которое возвращает либо только уникальные значения, либо возвращает количество уникальных значений?