C# 如何使用选定字段将IEnumerable强制转换为匿名类型
我有一些字符串数组: 第1列 第3栏 我有一节关于字段的课C# 如何使用选定字段将IEnumerable强制转换为匿名类型,c#,linq,casting,ienumerable,C#,Linq,Casting,Ienumerable,我有一些字符串数组: 第1列 第3栏 我有一节关于字段的课 class A { object Column1; object Column2; object Column3; object Column4; object Column5; } 现在我有一个对象列表 List<A> ListOfA = new List<A>(); List ListOfA=新列表(); 该列表有N个元素 现在,我如何将它从数组中投射到某个对象?并有列表 我想拥有新{Col
class A
{
object Column1;
object Column2;
object Column3;
object Column4;
object Column5;
}
现在我有一个对象列表
List<A> ListOfA = new List<A>();
List ListOfA=新列表();
该列表有N个元素
现在,我如何将它从数组中投射到某个对象?并有列表
我想拥有新{Column1='',Column3=''}
的列表,但我永远不知道该数组中将包含哪些列
这可能吗?如果是,我可以在哪里找到它。我当然有一些准则,但我认为它不会有帮助,所以我只是试图根据我建议的问题的评论来解释我想说什么:
foreach (A a in listOfA)
{
var t = typeof(A);
List<object> list = new List<object>();
foreach (var prop in t.GetProperties())
{
list.Add(prop.GetValue(a));
}
newListOfA.Add(list);
}
根据对这个问题的评论,我建议:
foreach (A a in listOfA)
{
var t = typeof(A);
List<object> list = new List<object>();
foreach (var prop in t.GetProperties())
{
list.Add(prop.GetValue(a));
}
newListOfA.Add(list);
}
和默多克的答案一样,但是纯林克的
from a in listOfA
let t = typeof(A)
from prop in t.GetProperties()
select prop.GetValue(a)
和默多克的答案一样,但是纯林克的
from a in listOfA
let t = typeof(A)
from prop in t.GetProperties()
select prop.GetValue(a)
我要逆流而上,说你可以通过反思来实现,但你不应该 为什么??因为现在你有一个匿名类型,你不知道它的属性。你将如何使用它?更多的思考
如果你有一个未知数量的字段,最好以索引的方式(列表或字典)来处理它们,而不是以反射的方式处理它们。我要逆当前的趋势说,你可以通过反射来实现,但你不应该 为什么??因为现在你有一个匿名类型,你不知道它的属性。你将如何使用它?更多的思考
如果您有未知数量的字段,最好以索引方式(列表或字典)处理它们,而不是使用反射的陷穴。
ListOfA.Select(d=>new{Column1=d.Column1,Column3=d.Column3})
?但如果数组中有3列呢?还是1?还是99999?我永远不知道有多少列是带数组的。他们不把列声明为属性,而是有一个列表?我没有其他选择,我必须基于我得到的数据,然后我会说使用反射并构建一个列表列表ListOfA.Select(d=>new{Column1=d.Column1,Column3=d.Column3})
?但如果数组中有3列呢?还是1?还是99999?我永远不知道有多少列与数组一起出现在这里。他们不将列声明为属性,而是拥有一个列表列表?我别无选择,我必须基于我获得的数据,然后我会说使用反射并构建一个列表列表。我想我没有抓住要点,我的解释在某种程度上是错误的。我有一个包含1000个元素的列表,基于数组,我想创建一个基于字符串数组的对象,并使用该数组中的字段将该列表转换为对象。我不能硬编码object@Taumantis该示例不是硬编码的。它读取对象属性并将其添加到包含所有对象的列表中,其中列表示为另一个列表。因此,基于数组,假设我有“Column6”,现在我想将该列表转换为列表,其中B是动态创建的对象,该对象“是”类B{Column6},并且在字段Column6中包含该列表包含的所有数据。我知道这是一个非常糟糕的要求,但你能给我更多的信息或编辑我的“弱智”的例子的基础上的答案吗?对不起,我的英语有很大的问题myslef@Taumantis首先是一个问题。如何知道该列是否不存在?a对象中是否有空值?a的对象总是用数据填充所有字段。现在我只是将列表转换为CSV,然后将CSV转换为datatable,然后从DT中删除我不想要的列,然后再次转换为CSV。我想要的是得到列表,因为我只想把列表转换成CSV文件。我不知道数组中会有多少列,但是列(字段名)总是会出现。数组可以是3,4,5,6个元素,如果有空就没有条目,我想我没有抓住要点,我的解释在某种程度上是错误的。我有一个包含1000个元素的列表,基于数组,我想创建一个基于字符串数组的对象,并使用该数组中的字段将该列表转换为对象。我不能硬编码object@Taumantis该示例不是硬编码的。它读取对象属性并将其添加到包含所有对象的列表中,其中列表示为另一个列表。因此,基于数组,假设我有“Column6”,现在我想将该列表转换为列表,其中B是动态创建的对象,该对象“是”类B{Column6},并且在字段Column6中包含该列表包含的所有数据。我知道这是一个非常糟糕的要求,但你能给我更多的信息或编辑我的“弱智”的例子的基础上的答案吗?对不起,我的英语有很大的问题myslef@Taumantis首先是一个问题。如何知道该列是否不存在?a对象中是否有空值?a的对象总是用数据填充所有字段。现在我只是将列表转换为CSV,然后将CSV转换为datatable,然后从DT中删除我不想要的列,然后再次转换为CSV。我想要的是得到列表,因为我只想把列表转换成CSV文件。我不知道数组中会有多少列,但是列(字段名)总是会出现。数组可以是3、4、5、6个元素,如果为空则没有条目另一个选项可以是动态
对象?另一个选项可以是动态
对象?