Linq - 无法隐式转换类型'System.Collections.Generic.IEnumerable

Yec*_*ats 1 c# linq error-handling implicit-conversion

我收到以下错误:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable' to 'Munchkin.Model.PlayerProfiles.Profile'. An explicit conversion exists (are you missing a cast?)
Run Code Online (Sandbox Code Playgroud)

我的代码是:

Profile currentProfile;

public Profile ActiveProfile()
{
    currentProfile = new Profile();        
    return currentProfile = 
        (from profiles in xmlDoc.Element("PlayerPofiles").Element("Online").Elements("Player")
        where (string)profiles.Element("Active") == "True"
        select new Profile
        {
            Name = (string)profiles.Element("Name"),
            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"),
            Losses = (string)profiles.Element("Ratio").Element("Loss"),
            Abandoned = (string)profiles.Element("Ratio").Element("Abandoned")
        });
}
Run Code Online (Sandbox Code Playgroud)

dot*_*tep 5

public Profile ActiveProfile()
        {
            currentProfile = new Profile();

           return currentProfile = (from profiles in xmlDoc.Element("PlayerPofiles").Element("Online").Elements("Player")
                            where (string)profiles.Element("Active") == "True"
                            select new Profile
                              {
                                  Name = (string)profiles.Element("Name"),
                                  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"),
                                  Losses = (string)profiles.Element("Ratio").Element("Loss"),
                                  Abandoned = (string)profiles.Element("Ratio").Element("Abandoned")
                              }).FirstOrDefault();
        }
Run Code Online (Sandbox Code Playgroud)

由于您的currentProfile是Single Profile Item并且查询分配了profile的集合,这就是出现此错误的原因.尝试使用FirstOrDefault()