public static StateCollection GetByName(String partialName)
{
StateCollection returnValue;
returnValue = new StateCollection();
//baseList is some list I wasn't nice enough to show where it came from.
//It's just a list of states. Get over it.
var stateList = from state in baseList
where state.Name.StartsWith(partialName)
select new State(state.Name, state.Code);
stateList.ToList().ForEach(currentState => returnValue.Add(currentState));
return returnValue;
}
So what is done here:
Basically I am using a linq expression to get states from a list of states (Like Michigan, Illinois, or Canada) based on name. No big deal. Then I take the query and produce a List from it. AMAZIN!
stateList.ToList().ForEach(curretState => returnValue.Add(curretState));
ForEach is an extension method for List<>. Now if you remember from previous posts, that means it resides in a static class somewhere that "tacks" it on to the List<> class. Basically this method acts like a typical foreach loop. (You know, go through the list and do something. Or nothing. I suppose you could just loop through if you wanted to. I won't tell you how to live your life.) Simple but in my opinion, much cleaner looking.
I mean I could do this:
public static StateCollection GetByName(String partialName)
{
StateCollection returnValue;
returnValue = new StateCollection();
foreach(State currentState in baseList)
{
if(currentState.Name.StartsWith(partialName)
{
returnValue.Add(currentState);
}
}
return returnValue;
}
Really it's just up to what you prefer. (And I'm sure you could drive a car with no power brakes. You'll still get there.) Also, I really didn't need the linq expression since I could have done this all with ForEach (Provided baseList is IEnumerable).
One last note, all IEnumerable collections have the ToList() method (And a bunch of other ones for that matter.)
No comments:
Post a Comment