【发布时间】:2016-09-30 12:52:57
【问题描述】:
我正在尝试按条件(两个 Observable 集合)从列表中获取子列表。虽然这可以按预期工作 - 选择很少的结果:
ObservableCollection<TestCase> affectedTestCases =
new ObservableCollection<TestCase>();
foreach (var testCase in TestCaseList.ListOfTestCases)
{
if (testCase.TestHash == CurrentFile.Hash)
{
affectedTestCases.Add(testCase);
}
}
其中 Hash(和 TestHash)是一个简单的字符串。这个没有显示结果,我想知道为什么:
var affectedTestCases = from testCase in TestCaseList.ListOfTestCases
where testCase.TestHash==CurrentFile.Hash
select testCase;
然后我想通过以下方式使用结果:
foreach (var affectedTestCase in affectedTestCases)
但它没有显示任何 LINQ 变体。我还尝试将 AffectedTestCases 投射到列表中。而且我还尝试使用 String.Equals() 进行比较。任何想法我做错了什么?
【问题讨论】:
-
LINQ 代码没问题(但它不等同于
foreach一)。请在使用查询结果的地方显示更多代码。 -
你在调试器中浏览过代码吗?您确定在第二种情况下
TestCaseList.ListOfTestCases实际上有任何东西吗?您确定该集合包含等于CurrentFile.Hash的TestHash值吗?您的 LINQ 查询应该按原样工作(您不需要添加ToList)所以您的数据集一定有问题。 -
TestCaseList.ListOfTestCases 包含 4 项,其中 3 项具有与 CurrentFile.Hash 相同的 TestHash。我尝试在一个函数中运行这两条代码而不更改数据集。