条件 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<> 以外的其他方式键入查询? 或者你能建议我需要做什么不同吗?
提前感谢!
你需要
一个default
开关的情况,为变量分配一些东西,否则在使用之前不会明确分配。