C# 使用LINQ C从通用对象获取记录#

C# 使用LINQ C从通用对象获取记录#,c#,linq,.net-4.5.2,C#,Linq,.net 4.5.2,我有一个泛型对象,需要使用LINQ查询从中获取项{code,description} 等级 [可序列化] [XmlRoot(“性别”)] 公共阶级性别 { [XmlElement(“性别”)] public List GenderListWrap=新列表(); } 公共类GenderListWrap { [XmlAttribute(“列表”)] 公共字符串ListTag{get;set;} [XmlElement(“项目”)] 公共列表性别列表=新列表(); } 公共类项目 { [XmlElem

我有一个泛型对象,需要使用LINQ查询从中获取项{code,description}

等级
[可序列化]
[XmlRoot(“性别”)]
公共阶级性别
{
[XmlElement(“性别”)]
public List GenderListWrap=新列表();
}
公共类GenderListWrap
{
[XmlAttribute(“列表”)]
公共字符串ListTag{get;set;}
[XmlElement(“项目”)]
公共列表性别列表=新列表();
}
公共类项目
{
[XmlElement(“代码”)]
公共字符串代码{get;set;}
[XmlElement(“描述”)]
公共字符串说明{get;set;}
}
在下面的屏幕截图中,我在GenderObject中看到了我的数据


*编辑*

根据您的编辑,您的问题似乎与您从“ObjectToXML”方法接收到的数据类型有关-根据代码的外观,这将返回某种类型的
Object
,而不是您在问题中指定的类型。您可以尝试强制转换到预期的类型
,例如:Gender GenderObject=(Gender)SystemCore.XMLPrasing.ObjectToXML(…)
,这可能会失败(如果返回的类型实际上不是Gender)。或者可以使用.NET内置的XML反序列化,它将能够返回正确类型的对象


尽管您拥有非常奇怪的数据结构(对于一个性别列表有什么样的努力?),但如果您想要一个
列表
,下面将只将项目投影到一个列表中:

genders.GenderListWrap.SelectMany(l => l.GenderList).ToList();
(这是假设您有一个名为
genders
的实例,其构造类似于:

var genders = new Gender
{
    GenderListWrap = new List<GenderListWrap>
    {
        new GenderListWrap
        {
            GenderList = new List<Item>
            {
                new Item { Code = "F", Description = "Female" },
                new Item { Code = "M", Description = "Male" },
            }
        },
        new GenderListWrap
        {
            GenderList = new List<Item>
            {
                new Item { Code = "N", Description = "Neutral" },
            }
        }
    }
};

var genderList = genders.GenderListWrap.SelectMany(l => l.GenderList).ToList();
var genders=新性别
{
GenderListWrap=新列表
{
新性别主义
{
性别列表=新列表
{
新项目{Code=“F”,Description=“Female”},
新项目{Code=“M”,Description=“Male”},
}
},
新性别主义
{
性别列表=新列表
{
新项目{Code=“N”,Description=“Neutral”},
}
}
}
};
var genderList=genders.GenderListWrap.SelectMany(l=>l.genderList.ToList();

但是,如果您想获取特定项目,可以使用注释中提到的标准索引访问器,例如
genders.GenderListWrap[0]。GenderList[0]
*编辑*

根据您的编辑,您的问题似乎与您从“ObjectToXML”方法接收到的数据类型有关-根据代码的外观,这将返回类型为
Object
,而不是您在问题中指定的类型。您可以尝试强制转换为预期的类型
,例如:Gender GenderObject=(Gender)SystemCore.XMLPrasing.ObjectToXML(…)
,这可能会失败(如果返回的类型不是实际的性别)。或者您可以使用.NET内置的XML反序列化,它将能够返回正确类型的对象


尽管您拥有非常奇怪的数据结构(对于一个性别列表有什么样的努力?),但如果您想要一个
列表
,下面将只将项目投影到一个列表中:

genders.GenderListWrap.SelectMany(l => l.GenderList).ToList();
(这是假设您有一个名为
genders
的实例,其构造类似于:

var genders = new Gender
{
    GenderListWrap = new List<GenderListWrap>
    {
        new GenderListWrap
        {
            GenderList = new List<Item>
            {
                new Item { Code = "F", Description = "Female" },
                new Item { Code = "M", Description = "Male" },
            }
        },
        new GenderListWrap
        {
            GenderList = new List<Item>
            {
                new Item { Code = "N", Description = "Neutral" },
            }
        }
    }
};

var genderList = genders.GenderListWrap.SelectMany(l => l.GenderList).ToList();
var genders=新性别
{
GenderListWrap=新列表
{
新性别主义
{
性别列表=新列表
{
新项目{Code=“F”,Description=“Female”},
新项目{Code=“M”,Description=“Male”},
}
},
新性别主义
{
性别列表=新列表
{
新项目{Code=“N”,Description=“Neutral”},
}
}
}
};
var genderList=genders.GenderListWrap.SelectMany(l=>l.genderList.ToList();

但是,如果您想要获取特定的项目,您可以使用注释中提到的标准索引访问器,例如
genders.GenderListWrap[0]。GenderList[0]

如果您强制转换对象,然后对其进行选择,这应该对您有效:

var genderList = ((Gender)GenderObject).GenderListWrap.SelectMany(x => x.GenderList);

这将返回一个
项的集合
s,其中包含您要查找的{code,description}。

如果您必须将对象强制转换为性别,然后对其进行选择,则这应该适用于您:

var genderList = ((Gender)GenderObject).GenderListWrap.SelectMany(x => x.GenderList);

这将返回一个
项的集合
s,其中包含您要查找的{code,description}。

您不能将其转换为
(性别)吗
?要获取项目列表还是特定项目?您的屏幕截图显示不止一项。您有什么问题?看起来您可以访问它。GenderObject.GenderListWrap[0]。GenderList[1]我要获取GenderList…您不能将其转换为
(性别)
?要获取项目列表还是特定项目?您的屏幕截图显示有多个项目。您有什么问题?看起来您可以访问它。GenderObject.GenderListWrap[0]。GenderList[1]我想得到GenderList…我猜OPs的问题是他/她不知道编译时的
genders
是什么。看看
GenderObject
是如何定义的,它显然是在运行时从一个只返回
对象的方法创建的。我使用泛型类来反序列化即将到来的xml字符串和类型。因此在后面的阶段我需要将数据转换或读取为特定的类类型Gender只是实现逻辑的一个简单示例我猜OPs的问题在于他/她不知道编译时的
genders
是什么。看看
GenderObject
是如何定义的,它显然是在运行时从一个只返回
对象的方法创建的。我使用的是generic类来反序列化即将到来的xml字符串和类型。因此在后面的阶段中,我需要将数据转换或读取为特定的类typeGender只是实现逻辑的简单示例