Я думаю, вы хотите использовать Select
здесь, а не SelectMany
.
SelectMany
предназначен для выбора коллекции в объекте, который вы обрабатываете в своем запросе. Затем выбранные коллекции объединяются в результате.
Например, если вы получили что-то вроде этого:
var a = {Tuple.Create("a", {1, 2, 3}),
Tuple.Create("b", {4, 5, 6}),
Tuple.Create("c", {7, 8, 9})}
Вы можете использовать SelectMany
, чтобы получить все результирующие значения в Item2
в Tuple
вступил в одном списке. a.SelectMany(t => t.Item2)
приведет к
{1, 2, 3, 4, 5, 6, 7, 8, 9}
Выберите с другой стороны, используется для обозначения ровно один результат (и я полагаю, что это то, что вы хотите, так a.Select(t => t.Item1)
приведет к {"a", "b", "c"}
и a.Select(t => t.Item2)
приведет:.
{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
Так что в целом я думаю, что в вашем случае что-то вроде
MyRepeater.DataSource = Objects.GroupBy(p => p.FAC_ID).Select(p => p.First())
.First().Dipartimento.AreeDipartimento
.Select(p => p.Aree);
будет правильным. Это все советы, которые я могу дать вам без дополнительной информации о вашей структуре данных и ожидаемых результатах.
Какой тип 'Aree'?Если это не последовательность, это звучит так, как будто вы выбираете 'Select' вместо' SelectMany'. – Lee
Да, вы правы, похоже, работает! У меня нет различий между ними так ... – markzzz
Что вы пытаетесь достичь вообще? Вы группируетесь по 'FAC_ID', тогда вы просто принимаете произвольную первую из каждой группы, из которой вы произвольно производите объект и так далее. Если вас не интересуют конкретные объекты, вы можете сохранить все и просто «Objects.First»(). Dipartimento.AreeDipartimento ... ' –