1
當前,此代碼將搜索所有組,並返回一個CameraItem,其中uniqueID等於某個值。返回一個組,其中一個項目的值等於
我想要發生的事情是我想要代碼返回CameraItem的組(CameraGroup)。
public static async Task<CameraItem> GetItemAsync(string uniqueId)
{
await _sampleDataSource.GetSampleDataAsync();
// Simple linear search is acceptable for small data sets
var matches = _sampleDataSource.Groups.SelectMany(group => group.Items).Where((item) => item.Id.Equals(uniqueId));
if (matches.Count() == 1) return matches.First();
return null;
}
我在返回CameraGroup嘗試:
public static async Task<CameraGroup> GetItemGroupAsync(string uniqueId)
{
await _sampleDataSource.GetSampleDataAsync();
// Simple linear search is acceptable for small data sets
var matches = _sampleDataSource.Groups.SelectMany(group => group.Items).Where((item) => item.Id.Equals(uniqueId));
if (matches.Count() == 1)
{
// Something here?
// Would it be a modification of var matches?
}
return null;
}
我將需要修改返回CameraItem的CameraGroup什麼
返回CameraItem的代碼?
謝謝!這工作,但我需要用Items.FirstorDefault替換Items.Any - 是否有Items.Any的原因? – ForeverLearning
@ForeverLearning:如果您使用上面的代碼,這有點奇怪。如果任何項目的謂詞(即lambda)爲真,則任何'返回true。它的關鍵是返回一個布爾值,這是'Where'之後的值。另一方面'FirstOrDefault'返回物品的一個實例,可能是一個'CameraItem'。除非您將它與您的知道項目進行比較,否則這不應該被接受。在這種情況下,如果該組不具有該項目作爲其第一項,則可能會出現問題。 – Chris
對不起,更正,我的意思是Groups.Where。我將其改爲FirstOrDefault,因爲我得到了一個明確的轉換錯誤 – ForeverLearning