![](/img/trans.png)
[英]LINQ: Search multiple fields of a List of objects where fields can be null
[英]Linq for list of objects make a collection of its fields
LINQ 可以寫得更短嗎?
class MyClass
{
public int Field1;
public int Field2;
}
var src = new List<MyClass>
{
new MyClass{Field1 = 0, Field2 = 1},
new MyClass{Field1 = 2, Field2 = 3}
};
var list = new List<int>();
foreach (var item in src)
{
list.Add(item.Field1);
list.Add(item.Field2);
}
最后, list
是這樣的:0、1、2、3。
是的,您可以將int
值放入一個數組並使用SelectMany
展平 arrays:
var list = src.SelectMany(x => new[] { x.Field1, x.Field2 }).ToList();
為了完成,如果您想對 class 中的所有公共int
字段執行此操作而無需手動指定它們,您可以使用反射:
var fields = typeof(MyClass).GetFields().Where(f => f.FieldType == typeof(int));
var list = src.SelectMany(x => fields.Select(f => (int)f.GetValue(x))).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.