簡體   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