'return in if statement throws conversion error
I will apologize in advance for the long post. Just trying to give you all the information I have.
I have an if statement in a method that looks like this:
var comparison = await SystemService.SearchCount();
var fileExporter = Configure();
var fileName = "SearchResults"
if (defaultValue <= comparison)
{
var result = SearchResult.Rows.Where(s => VSR.Any(s2 => s2.ID == s.Values.FirstOrDefault()));
var records = SearchResult.Rows.ToList();
await Task.Yield();
return fileExport.ToCsv(records, fileName);
}
The error that I am getting is the following error:
cannot convert from '
System.Collections.Generic.List<SearchRows>' to 'System.Collections.Generic.IList<SearchResults>'
I tried to change the return to explicitly cast to IList like this:
return fileExport.ToCsv((IList<SearchResults>)records, fileName);
This will let it build in Visual Studio but it throws an InvalidCastException when I run it and look at the developer tools:
System.InvalidCastException: Unable to cast object of type 'System.Collections.Generic.List[SearchRow] to type System.Collections.Generic.IList[SearchResult].
What am I missing here? I don't see an issue at all with the code.
The SearchResults model is a listing of the records to be returned (Id, name etc)
The SearchRows model serves as a wrapper for the columns and rows (I didn't name these they came in with the legacy code)
Solution 1:[1]
records is of type List<SearchRow>, which is not compatible with the type List<SearchResult>, you either have to convert the SearchRows to SearchResults (e.g. via a Select) or alter the type accepted by ToCSV
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Nick Bailey |
