LINQ will always return IEnumerable and has a method, ToList(), which converts to a generic list. This is great, but what if your initial list is not a generic list? Often I'll create classes that inherit generic lists but add some functionality or metadata specific to the list. It's inconvenient to rebuild the list in the original type each time you do a LINQ query, or create a special method for each class to do this.
So I ended up creating a generic extension method which lets you automatically cast your results into any IList object, as follows:
public static T ToList(this IEnumerable baseList) where T : IList,new() { T newList = new T(); foreach (object obj in baseList) { newList.Add(obj); } return (newList); }
Now you can just do this:
MyListClass newList = oldList.Where(item=>item.SomeProperty=SomeValue).ToList();
Problem solved.
No comments:
Post a Comment