条件 LINQ 查询收到未分配变量错误

本文关键字:分配 变量 错误 LINQ 查询 条件 | 更新日期: 2023-09-27 18:34:28

我从这个问题(具有未分配变量参数的linq(中得到,linq查询的延迟执行解释了为什么我得到一个未分配的变量错误,过去这段代码作为一种解决方法工作得很好:

    public static void LoadProjects()
    {
        CHOCoreDataContext dc = new CHOCoreDataContext();
        IEnumerable<ChoCore_Linq_WPF.PROJECT> query1;
        if (((MainWindow)System.Windows.Application.Current.MainWindow).chkShowActive.IsChecked == true)
        {
            query1 =
            from x in dc.PROJECTs
            orderby x.Experiment_Name
            where x.Active == "True" //filter for active projects only
            select x;
        }
        else
        {
            query1 =
            from x in dc.PROJECTs
            orderby x.Experiment_Name
            select x;
        }
        List<ProjectID> items = new List<ProjectID>();
        foreach (var thing in query1)
        {
            items.Add(new ProjectID() { pName = thing.Experiment_Name, pActive = thing.Active, pNotes = thing.Notes }); //creates an "item" with the two properties
        }
        ((MainWindow)System.Windows.Application.Current.MainWindow).lbxProjects.ItemsSource = items; //bind the listbox to the items list
    }

我在 IF 语句之前声明查询,它工作得很好。 但是,在另一种方法中,我尝试使用 SWITCH 语句完成同样的事情:

    public static bool ProjectExists(string myProjectID, modPID _modPID)
    {
        CHOCoreDataContext dc = new CHOCoreDataContext();
        IEnumerable<ChoCore_Linq_WPF.PROJECT> duplicate;
        switch (_modPID)
        {
            case (modPID.addPID):
                duplicate =
                   (from x in dc.PROJECTs
                    where x.Experiment_Name == myProjectID
                    select x);
                break;
            case (modPID.editPID):
                duplicate =
                    (from x in dc.PROJECTs
                     where x.Experiment_Name == myProjectID 
                        && x.PROJECTID_PK != FindProjectKey(myProjectID)
                     select x);
                break;
        }

        if (duplicate.Count() == 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }  

我在下部 IF 语句中收到一个错误,即变量"重复"未分配。 我明白这意味着什么,但我不明白为什么没有分配它。 我想也许 SWITCH 语句弄乱了变量的范围,所以尝试了一个 IF 语句来构造 linq 查询,但我得到了同样的错误。 我是否需要使用 IEnumerable<> 以外的其他方式键入查询? 或者你能建议我需要做什么不同吗?

提前感谢!

条件 LINQ 查询收到未分配变量错误

你需要

一个default开关的情况,为变量分配一些东西,否则在使用之前不会明确分配。