I did look at common implementations of EF Repository pattern on the web. Then i came with such question. For example if i have method like that:
public IEnumerable<Entity> FindEntity(Expression<Func<Entity, bool> where) {...}
Than If i have such case where i need to have IList instead of IEnumarable
i may create IList based on my IEnumerable FindEntity implementation
IList<Entity> myList = new List<Entity>(FindEntity(x = x => x.Date == inputDate));
then i may have all the advantages of IList interface (Count, etc...) in myList instance.
Is this good approach to do like that or may be there is better ways of casting IEnumerable to IList or also as an option i may have additional method in Repository which return IList by default e.g
public IList<Entity> FindEntity(Expression<Func<Entity, bool> where) {....}
in that case i may remove IEnumerable FindEntity implementation at all because I may simply cast IList to IEnumerable when i need it, or i can live both implementations just avoid any casts.
And one more question: Why common Repository implementation practice to have only IEnumerable not IList, there should be explanation for that? Or it is only personal preferences?
Yes i understand that IEnumerable is much more lighter rather than IList but anyway there is a lot situations where we need to have IList instead of IEnumerable and in this approach we need to cast IEnumerable To IList isn't it?