I have a method:
public DzieckoAndOpiekunCollection GetChildAndOpiekunByFirstnameLastname(string firstname, string lastname)
{
DataTransfer.ChargeInSchoolEntities db = new DataTransfer.ChargeInSchoolEntities();
DzieckoAndOpiekunCollection result = new DzieckoAndOpiekunCollection();
if (firstname == null && lastname != null)
{
IList<DzieckoAndOpiekun> resultV = from p in db.Dziecko
where lastname == p.Nazwisko
**select** new DzieckoAndOpiekun(
p.Imie,
p.Nazwisko,
p.Opiekun.Imie,
p.Opiekun.Nazwisko)
;
result.AddRange(resultV);
}
return result;
}
and error in selected place :
Error 1 Cannot implicitly convert type 'System.Linq.IQueryable<WcfService1.DzieckoAndOpiekun>' to 'System.Collections.Generic.IList<WcfService1.DzieckoAndOpiekun>'. An explicit conversion exists (are you missing a cast?)
Any idea how solve my problem?
This question is related to
c#
.net
linq
exception-handling
linq-to-entities
To convert IQuerable
or IEnumerable
to a list, you can do one of the following:
IQueryable<object> q = ...;
List<object> l = q.ToList();
or:
IQueryable<object> q = ...;
List<object> l = new List<object>(q);
SonarQube
reported Return an empty collection instead of null.
and I had a problem with the error with casting as in the title of this question.
I was able to get rid of both only using return XYZ.ToList().AsQueryable();
in a method with IQueryable
like so:
public IQueryable<SomeType> MethodName (...) {
IQueryable<SomeType> XYZ;
...
return XYZ.ToList().AsQueryable();
}
Hope so it helps for those in a similar scenario(s).
Try this -->
new DzieckoAndOpiekun(
p.Imie,
p.Nazwisko,
p.Opiekun.Imie,
p.Opiekun.Nazwisko).ToList()
I've got solved my problem this way in EF on list of records from db
ListOfObjectToBeOrder.OrderBy(x => x.columnName).ToList();
You can replace IList<DzieckoAndOpiekun> resultV
with var resultV
.
You can use the .ToList() method to convert the IQueryable result returned to an IList, as shown below, after the linq query.
public DzieckoAndOpiekunCollection GetChildAndOpiekunByFirstnameLastname(string firstname, string lastname)
{
DataTransfer.ChargeInSchoolEntities db = new DataTransfer.ChargeInSchoolEntities();
DzieckoAndOpiekunCollection result = new DzieckoAndOpiekunCollection();
if (firstname == null && lastname != null)
{
IList<DzieckoAndOpiekun> resultV = from p in db.Dziecko
where lastname == p.Nazwisko
**select** new DzieckoAndOpiekun(
p.Imie,
p.Nazwisko,
p.Opiekun.Imie,
p.Opiekun.Nazwisko).ToList()
;
result.AddRange(resultV);
}
return result;
}
If using a where clause be sure to include .First()
if you do not want a IQueryable object.
Source: Stackoverflow.com