[英]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.