0
using (Entities PlatfrmName = new Entities())
{
    foreach (string selectedProject in SplitSelectedprojects)
    {
        var platformId = from platformID in PlatfrmName.AppProjects84
                         where platformID.ProjectName == selectedProject
                         select platformID.PlatformId;

                        var platformName = from platfrmName in PlatfrmName.AppPlatforms84
                                           where platfrmName.PlatformId.ToString() == platformId.ToString()
                                           select platfrmName.PlatformName;
                        //Get the projects based on the platforms
                        if (platformName.ToString() == "Base")
                            BASE += selectedProject + ",";
                        if (platformName.ToString() == "Windows")
                            WINDOWS += selectedProject + ",";
                        if (platformName.ToString() == "Web")
                            WEB += selectedProject + ",";
                        if (platformName.ToString() == "Wpf")
                            WPF += selectedProject + ",";
                        if (platformName.ToString() == "Silverlight")
                            SILVERLIGHT += selectedProject + ",";
                        if (platformName.ToString() == "Mvc")
                            MVC += selectedProject + ",";
    }
}

我希望结果为platformName == Base,那么应该将该项目添加到 BASE 变量中。当控件到达时 if (platformName.ToString() == "Base"),我将光标悬停在它上面,它什么也不显示。谁能帮我解决这个问题。

4

1 回答 1

0

第二个查询的结果不是 Platform 的对象,而是 IQueryable。因此 ToString 不会返回您期望的任何字符串。此外,第二个查询(可能是第一个查询)根本不会针对数据库执行,因为没有任何东西可以强制执行(即没有评估)。我也相信你可以只有一个查询而不是两个。像这样的东西:

var platformName = (from platform in PlatfrmName.AppProjects84 
                   where platformID.ProjectName == selectedProject 
                   select platform.PlatformName).Single();

应该做的伎俩 - 首先,它结合了两个查询。其次,它通过使用 .Single() 强制查询评估。这样查询被发送到数据库以获取结果。我假设您对给定项目只期望一个结果,因此我使用了 Single()。.Single() 的结果是单个对象而不是 IEnumerable,因此您应该能够获取您的平台名称。此外,如果 platformName 是字符串,则不必使用 .ToString()。

于 2012-10-05T18:32:49.573 回答