C# 如何使用选定字段将IEnumerable强制转换为匿名类型

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

我有一些字符串数组:

第1列 第3栏

我有一节关于字段的课

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个元素,如果为空则没有条目另一个选项可以是
动态
对象?另一个选项可以是
动态
对象?