I get this error message:
The type arguments for method \'System.Linq.Enumerable.Select(System.Collections.Generic.IE
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();
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;
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.
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
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.