C# 返回其中一个';s项等于一个值
当前,此代码将搜索所有组,并返回一个CameraItem,其中uniqueID等于某物 我希望代码返回CameraItem的组(CameraGroup) 返回CameraItem的代码:C# 返回其中一个';s项等于一个值,c#,linq,C#,Linq,当前,此代码将搜索所有组,并返回一个CameraItem,其中uniqueID等于某物 我希望代码返回CameraItem的组(CameraGroup) 返回CameraItem的代码: public static async Task<CameraItem> GetItemAsync(string uniqueId) { await _sampleDataSource.GetSampleDataAsync(); // Simple linear search is
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;
}
公共静态异步任务GetItemAsync(字符串唯一ID)
{
wait_sampleDataSource.GetSampleDataAsync();
//对于小数据集,简单线性搜索是可以接受的
var matches=_sampleDataSource.Groups.SelectMany(group=>group.Items)。其中((item)=>item.Id.Equals(uniqueId));
if(matches.Count()==1)返回matches.First();
返回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;
}
公共静态异步任务GetItemGroupAsync(字符串唯一ID)
{
wait_sampleDataSource.GetSampleDataAsync();
//对于小数据集,简单线性搜索是可以接受的
var matches=_sampleDataSource.Groups.SelectMany(group=>group.Items)。其中((item)=>item.Id.Equals(uniqueId));
如果(匹配.Count()==1)
{
//这里有什么?
//这会是对var匹配的修改吗?
}
返回null;
}
我需要修改什么才能返回CameraItem的CameraGroup?此处,
匹配项将包含至少有一个项目匹配的所有组唯一ID
:
static async Task<CameraGroup> GetItemGroupAsync(string uniqueId)
{
await _sampleDataSource.GetSampleDataAsync();
var matches = _sampleDataSource.Groups
.Where(group => group.Items.Any(item => item.Id.Equals(uniqueId)));
return matches.Count() == 1 ? matches.First() : null;
}
谢谢这是可行的,但我需要用Items.FirstorDefault替换Items.Any-是否有理由使用Items.Any?@ForeverLearning:如果您使用上述代码,这有点奇怪<如果任何项的谓词(即lambda)为true,则code>Any
返回true。该键返回一个布尔值,即后面的位置<另一方面,code>FirstOrDefault
返回该项的实例,可能是CameraItem
。这在where中是不可接受的,除非您将其与您的已知项进行比较。在这种情况下,如果该组没有将该项作为其第一项,您可能会遇到问题。抱歉,更正,我指的是组。Where。我把它改成了FirstOrDefault,因为我得到了一个明确的转换错误啊,我们当时的想法是一样的。好!!
static async Task<CameraGroup> GetItemGroupAsync(string uniqueId)
{
await _sampleDataSource.GetSampleDataAsync();
return _sampleDataSource.Groups
.SingleOrDefault(group =>
group.Items.Any(item => item.Id.Equals(uniqueId)));
}