2014-10-17 2 views
0

Учитывая следующий код, я хотел бы, чтобы выбрать все «стороны» в какой-то позиции в массиве:Linq Выберите Многие из вложенного списка

var f1 = new Filing(); 
var f2 = new Filing(); 
var f3 = new Filing(); 
var f4 = new Filing(); 

var p1 = new Party() {Name = "p1"}; 
var p2 = new Party() { Name = "p2" }; 
var p3 = new Party() { Name = "p3" }; 

var p4 = new Party() { Name = "p4" }; 
var p5 = new Party() { Name = "p5" }; 
var p6 = new Party() { Name = "p6" }; 

var p7 = new Party() { Name = "p7" }; 
var p8 = new Party() { Name = "p8" }; 
var p9 = new Party() { Name = "p9" }; 

var p10 = new Party() { Name = "p10" }; 
var p11 = new Party() { Name = "p11" }; 
var p12 = new Party() { Name = "p12" }; 

var p1List = new List<Party>(); 
p1List.Add(p1); 
p1List.Add(p2); 
p1List.Add(p3); 
f1.Parties = p1List; 

var p2List = new List<Party>(); 
p2List.Add(p4); 
p2List.Add(p5); 
p2List.Add(p6); 
f2.Parties = p2List; 

var p3List = new List<Party>(); 
p3List.Add(p7); 
p3List.Add(p8); 
p3List.Add(p9); 
f3.Parties = p3List; 

var p4List = new List<Party>(); 
p4List.Add(p10); 
p4List.Add(p11); 
p4List.Add(p12); 
f4.Parties = p4List; 

var fList = new List<Filing>(); 

fList.Add(f1); 
fList.Add(f2); 
fList.Add(f3); 
fList.Add(f4); 

То, что я хочу, чтобы получить список всех Сторон в 0-я позиция для всех филиментов ... пример вернет p1, p4, p7 и p10. Я пробовал:

fList.SelectMany(f => f.Parties[0]); 

... но получаю ошибку компиляции о том, что SelectMany не может быть выведена из эксплуатации. Есть идеи?

ответ

0

SelectMany предполагает, что его аргумент вернет IEnumerable. Ваш аргумент возвращает один объект; поэтому простой Select более подходит, чем SelectMany.

0

ALT1

вар yourValues ​​= fList.SelectMany (х => x.Parties.Take (1)) Выберите (ы => s.Name).;

ALT2

вар yourValues ​​= fList.Select (х => x.Parties.First() Имя.);

foreach (var val in yourValues) 
{ 
    Console.WriteLine(val); //p1 p4 p7 p10 
}