C# Linq-无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.List”
我得到以下错误: 无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.List”。存在显式转换。是否缺少强制转换 我的代码如下:C# Linq-无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.List”,c#,linq,C#,Linq,我得到以下错误: 无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.List”。存在显式转换。是否缺少强制转换 我的代码如下: public Profile PullActiveProfile() { //currentProfile.Decks = new List<string>(); return currentProfile = (from profi
public Profile PullActiveProfile()
{
//currentProfile.Decks = new List<string>();
return currentProfile = (from profiles in xmlDoc.Element("PlayerPofiles").Elements("Player")where (string)profiles.Element("Active") == "True"
select new Profile
{
Name = (string)profiles.Element("Name"),
Type = (string)profiles.Element("Type"),
Verified = (string)profiles.Element("Verified"),
Password = (string)profiles.Element("Password"),
Email = (string)profiles.Element("Email"),
Sex = (string)profiles.Element("Sex"),
Avatar = (string)profiles.Element("Avatar").Attribute("path") ?? "",
Created = (DateTime)profiles.Element("Created"),
Birthday = (string)profiles.Element("Birthday") ?? "",
Wins = (string)profiles.Element("Ratio").Element("Win") ?? "0",
Losses = (string)profiles.Element("Ratio").Element("Loss") ?? "0",
Abandoned = (string)profiles.Element("Ratio").Element("Abandoned"),
// The following line is where I get the error. The decks node can have many descendants
Decks = profiles.Elements("Decks").Descendants()
.Select(x => x.ToString()).ToList();
}).FirstOrDefault();
}
以下是节点结构:
<PlayerPofiles>
<Player>
<Name>Stacey - Online</Name>
<Type>Full/Basic</Type>
<Active>True</Active>
<Verified>True</Verified>
<Password>pass</Password>
<Email>xxxx@gmail.com</Email>
<Sex>Female</Sex>
<Avatar path="/images/Treasure/BroadSword.png" />
<Ratio>
<Win>0</Win>
<Loss>0</Loss>
<Abandoned>0</Abandoned>
</Ratio>
<Created>6/19/2011</Created>
<Birthday>09/28/1989</Birthday>
<Decks>
<Base />
<Booty />
</Decks>
</Player>
我认为您应该检索一个列表
profiles.Elements("Decks").Descendants()
.Select(x => x.requiredname).ToList()
我建议您首先从xml中获取记录,然后执行如下映射:-
var currentProfile = from profiles in xmlDoc.Element("PlayerPofiles").Elements("Player")
where (string)profiles.Element("Active") == "True".FirstOrDefault()
select profile
Profile profile = new Profile();
profile.Name = currentProfile.Name;
. // all your properties mapping
.
.
return profile;
删除该文件;托利斯特之后
var profiles = xmlDoc.Element("PlayerPofiles").Elements("Player")
.where(profile =>(profile.Element("Active") == "True"))
.FirstOrDefault();
if(profiles!=null){
return new Profile
{
Name = (string)profiles.Element("Name"),
Type = (string)profiles.Element("Type"),
Verified = (string)profiles.Element("Verified"),
Password = (string)profiles.Element("Password"),
Email = (string)profiles.Element("Email"),
Sex = (string)profiles.Element("Sex"),
Avatar = (string)profiles.Element("Avatar").Attribute("path") ?? "",
Created = (DateTime)profiles.Element("Created"),
Birthday = (string)profiles.Element("Birthday") ?? "",
Wins = (string)profiles.Element("Ratio").Element("Win") ?? "0",
Losses = (string)profiles.Element("Ratio").Element("Loss") ?? "0",
Abandoned = (string)profiles.Element("Ratio").Element("Abandoned"),
// The following line removed the ;
Decks = profiles.Elements("Decks").Descendants()
.Select(x => x.Value.ToString()).ToList()
});
}
else
{
//Handle if null
}
当我在中添加该行时,我的第一个选择短语出现错误:无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“Munchkin.Model.PlayerProfiles.Profile”。存在显式转换。是否缺少强制转换?我的;-说我漏掉了一个逗号。我有:Decks=profiles.ElementsDecks.substanders.Selectx=>x.Value.ToList;}。第一预设;删除ToList中的分号;分号修正了它。谢谢你的建议!另外,我用正确的代码更新了我原来的帖子。对于我的节点结构,我需要x.ToString来提取值。你能提供甲板周围的节点结构吗