Хорошо, вот что у меня есть.C# - LINQ выберите отличный от списка, который содержит список
public class A
{
//Properties
List<B> listB;
//Methods
}
public class B
{
//Properties
public struct C
{
public byte D
{
get;
set;
}
//Other propeties
}
public List<C> listC;
//Methods
}
//..somewhere
A mydataA = new A();
mydataA.listB = new List<B>();
mydataA.listB.listC = new List<C>();
mydataA.listB.listC = JsonConvert.DeserializeObject<List<C>>(json);
//C.D will take values like 1, 2, 1, 2, 2, 3, 5, 2
нужно выбрать различные значения D
от каждого C
, поэтому результат будет список 1, 2, 3, 5
. На данный момент, я выбрать различные данные, как это:
List<byte> mylist = new List<byte>();
foreach(var each_of_B in A.listB)
{
foreach(var each_of_C in each_of_B.C)
{
mylist.Add(each_of_C.D);
}
}
var res = mylist.GroupBy(t => t).Select(g => g.First()).ToList();
Но это не очень здорово, потому что я должен создать новый список, создать несколько петель. Есть ли способ выбрать отдельные данные с одной строкой, например var res = mydataA.***.Select(g => g.First()).ToList();
, где ***
- это то, что мне нужно?
Отлично! Спасибо! знак равно – Vlad