我正在测试一个在我的项目中使用的简单代码块。我想举例说明。这是班级
class Processing
{
public string Region { get; set; }
public Car _car {get;set;}
public double Kilometer { get; set; }
}
class Car
{
public string LicansePlate { get; set; }
public string Driver { get; set; }
public double OdoMeter { get; set; }
}
现在。我创建了Processing of Processing。这个列表contatin:
我想简单地使用SelectMany()使列表变平。为什么我使用这种方式是SelectMany()将来会使用“var”作为参考。我的目标outpur是这样的:
Region LicancePlate Driver Odometer Kilometer ... ... ... ... ... ... ... ... ... ...
此代码块仅为test.Main Block就是这样。
public partial class MainWindow : Window
{
List<Processing> proces;
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded_1(object sender, RoutedEventArgs e)
{
proces= new List<Processing>(){
new Processing {Region="Konya",Kilometer=96,_car= new Car(){LicansePlate="34 ABR 45", Driver="Hasan Doğan", OdoMeter=1322}},
new Processing {Region="Karaman",Kilometer=233,_car=new Car{ LicansePlate="34 JT 9809" ,Driver="Ahmet Turgut",OdoMeter=1231}},
new Processing { Region = "Ankara", Kilometer = 57, _car=new Car {LicansePlate = "34 JK 8547", Driver = "Tuncay Yıldız", OdoMeter = 472 }}
};
var kk = proces.SelectMany(b => b);
dtgrid.ItemsSource = kk.ToList();
}
var kk =kullanımlar.SelectMany(b =&gt; b); 句子给出错误。如何使用SelectMany()获取包含子字段的所有行。错误如下: 无法从使用中推断出来。尝试明确指定类型参数。
答案 0 :(得分:3)
看起来您需要Select
而不是SelectMany
:
var kk = proces.Select(p => new {
Region = p.Region,
LicencePlate = p.c.LicencePlate,
Driver = p.c.Driver,
Odometer = p.c.Odometer,
Kilometer = p.Kilometer
});
答案 1 :(得分:0)
如果你想要一个“平面”列表,那么你必须迭代属性。 你可以这样做,例如
编写一个递归函数,迭代PROCESS [0]属性
proces[0].getType().GetProperties()
可以获得属性......
当迭代在Expando或类似的东西中获得属性推送时,那么
你有一张DYNAMIC FLAT清单:)
在土耳其语中,倾听ne olursa olsun grid benzeri birlisteiçinpropertererçerisindekilasslarıdabirdöngüylealıpexploobjeizo bas ... olay biter;)
kolaylıklardiliyorum...放轻松......