Why does the IEnumerable<T>.Select() works in 1 of 2 cases ? Can not be inferred from usage

元气小坏坏 提交于 2019-12-01 18:14:17

documentsOC.Add returns void.
It doesn't make any sense (and is impossible) to write .Select<Something, void>(...).

What you're trying to do cannot work in the first place; Select is lazy and doesn't call your function until you enumerate the results.

You should use a regular foreach loop.

The Error seems The Return statement missing when you select an Items from the collection.

Example:

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

I suspect that Add returns void - is that right? If so there is no way of projecting that to a Func<,> - only to an Action<T> - and Select wants the Func<,>.

Select is not the same as an indirect `foreach

What is the return type of ObservableCollection<Document>.Add? Typically an Add method returns void. You can't use LINQ Select to execute a procedure for all elements, only a function that returns something (else where would the return value of Select come from?). Instead you can use LINQ ForEach or the C# foreach loop.

Select is not a replacement for a foreach. Use this instead:

ObservableCollection<Document> documentsOC = new ObservableCollection<Document>();
IEnumerable<Document> documents = _docRepo.GetDocumentsByPupilId(_selectedPupil.Id);
foreach(var doc in documents)
{
    documentsOC.Add(doc);
}
SelectedPupil.Documents.DocumentList = documentsOC;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!