繁体   English   中英

Linq查询没有返回结果

[英]Linq query returns no result

我试图按条件(两个可观察的集合)从列表中获得一个子列表。 尽管这可以按预期工作-选择一些结果:

ObservableCollection<TestCase> affectedTestCases =
    new ObservableCollection<TestCase>();
foreach (var testCase in TestCaseList.ListOfTestCases)
{
    if (testCase.TestHash == CurrentFile.Hash)
    {
        affectedTestCases.Add(testCase);
    }
}

哈希(和TestHash)是一个简单的字符串。 这个没有显示结果,我想知道为什么:

var affectedTestCases = from testCase in TestCaseList.ListOfTestCases
where testCase.TestHash==CurrentFile.Hash
select testCase;

然后我想通过以下方式使用结果:

foreach (var affectedTestCase in affectedTestCases)

但是它没有显示任何LINQ变体。 我也尝试过将AffectedTestCases强制转换为列表。 我还尝试使用String.Equals()进行比较。 有什么想法我做错了吗?

尝试这个:

var affectedTestCases = TestCaseList.ListOfTestCases.Where(_ => _.TestHash.Equals(CurrentFile.Hash));

ObservableCollection如果不起作用,则实现Collection Strange,使用Any()稍作修改,请尝试此操作

 var affectedTestCases = from testCase in TestCaseList.ListOfTestCases
                                 where TestCaseList.ListOfTestCases.Any(o=> o.TestHash.Contains(CurrentFile.Hash))
                                 select testCase ;

要么

 affectedTestCases = new ObservableCollection<TestCase>(TestCaseList.Where(o => o.TestHash.Any(m => m.Equals(CurrentFile.TestHash))).Select(o => o));

我想我想通了,我尝试使用LINQ,然后修改了CurrentFile.Hash(LINQ条件的一部分)。 之后,受影响的测试案例上的foreach不会显示任何结果。 所以我错误地使用LINQ,因为我改变了条件。 我以为它记得结果。 解决方案很简单,我可以在LINQ的结果上使用ToList()并使用这些结果。 像这样:

var affectedTestCases = (from testCase in TestCaseList.ListOfTestCases
  where testCase.TestHash==CurrentFile.Hash
  select testCase).ToList();

ScriptEditor.Save(filePath);// this changes CurrentFile.Hash

foreach (var affectedTestCase in affectedTestCases2)
{
  int index = TestCaseList.ListOfTestCases.IndexOf(affectedTestCase);
  TestCaseList.ListOfTestCases[index].TestHash = CurrentFile.Hash;
}

谢谢您的帮助。 否则我不会弄清楚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM