複雑なオブジェクトを含むDataTableまたはDaatViewをフィルタリングします。DataTable/DataViewの複雑なオブジェクトをフィルタリングします。
はの私は、この対象者
public class Person{
public int Id{get; set;}
public int Age{get; set;}
public strng Name{get; set;}
public Address BillAddress{get; set;}
}
public class Address{
public string
Town{get; set}
public string Street{get; set}
public int Number{get; set}
}
は、今私はPersonオブジェクトのリストとのDataView記入しているとしましょう:私はPersonオブジェクトの10列とのDataViewを取得するようにするため
public static DataView ToObjectDataView<T>(this IList<T> list, int countOfColumns)
{
if (list == null || countOfColumns < 1)
{
return null;
}
int columns = countOfColumns;
DataTable dataTable = new DataTable();
for (int currentCol = 0; currentCol != columns; currentCol++)
{
DataColumn column = new DataColumn(currentCol.ToString(), typeof(T));
dataTable.Columns.Add(column);
}
DataRow row = null;
int currentColumn = 0;
for (int index = 0; index < list.Count; index++)
{
if (list[index] == null)
{
continue;
}
if (Equals(null, row))
row = dataTable.NewRow();
row[currentColumn] = list[index];
currentColumn++;
if (currentColumn == columns)
{
dataTable.Rows.Add(row);
row = null;
currentColumn = 0;
}
}
//Verarbeitung der letzten Zeile
if (!Equals(null, row))
{
dataTable.Rows.Add(row);
}
return new DataView(dataTable);
}
を、 evrey列には、そのインデックスの名前を持っています
IList<Person> personList = new List<Person>();
// Fill the list...
DataView dataSource = personList.ToObjectDataSource(10);
今、私はこのDataViをフィルタリングしたいと思いますたとえば、「Fakestreet」に住むすべての人物を取得します。
私は見つけられませんでしたので、これは、部分的な解決策である