Csharp/C#教程:为什么IEnumerable .Select()在2种情况中有1种工作? 无法从使用中推断出来分享


为什么IEnumerable .Select()在2种情况中有1种工作? 无法从使用中推断出来

我收到此错误消息:

The type arguments for method 'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable, System.Func)' cannot be inferred from the usage. Try specifying the type arguments explicitly. 

第一种方法使用IEnumerable.Select()没有问题? 第二种方法的问题在哪里?

 private void GetPupilsForSchoolclass() { ObservableCollection pupilsOC = new ObservableCollection ( _adminRepo.GetPupilsBySchoolclassId(_selectedSchoolclass.SchoolclassId).Select(p => new PupilViewModel(p, _adminRepo)) ); SelectedSchoolclass.PupilListViewModel = pupilsOC; } private void GetDocumentsForPupil() { ObservableCollection documentsOC = new ObservableCollection(); IEnumerable documents = _docRepo.GetDocumentsByPupilId(_selectedPupil.Id); documents.Select(doc => documentsOC.Add(doc)); SelectedPupil.Documents.DocumentList = documentsOC; } 

documentsOC.Add返回void
写作没有任何意义(并且是不可能的)。选择.Select(...)

你想要做的事情首先不能起作用; Select是惰性的,在枚举结果之前不会调用您的函数。

你应该使用常规的foreach循环。

怀疑 Add返回void – 是吗? 如果是这样,则无法将其投影到Func<,> – 仅限于Action – 并且Select想要Func<,>

Select与间接的’foreach不同

当您从集合中选择一个Items时,Error似乎缺少Return语句。

例:

 collection = nonLabors.Select(item => { item.Travel_Miles = item.Travel_Miles_Original != null ? decimal.Parse(item.Travel_Miles_Original) : 0; return item; }).ToList(); 

ObservableCollection.Add的返回类型是什么? 通常, Add方法返回void。 你不能使用LINQ Select为所有元素执行一个过程,只有一个返回一些东西的函数(否则Select的返回值来自哪里?)。 相反,您可以使用LINQ ForEach或C#foreach循环。

选择不是 foreach的替代品。 改为使用它:

上述就是C#学习教程:为什么IEnumerable .Select()在2种情况中有1种工作? 无法从使用中推断出来分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 ObservableCollection documentsOC = new ObservableCollection(); IEnumerable documents = _docRepo.GetDocumentsByPupilId(_selectedPupil.Id); foreach(var doc in documents) { documentsOC.Add(doc); } SelectedPupil.Documents.DocumentList = documentsOC; 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/983934.html

(0)
上一篇 2021年12月19日
下一篇 2021年12月19日

精彩推荐