我有这行代码返回IList<T>
int index = list.IndexOf(list.Where(x => x.Code == searchValue).FirstOrDefault());
我在许多地方都有类似的构造,它在不同的属性上搜索集合。我的目标是自动执行此操作,因此我可以使用通用方法MyClass<T>
int index = myClass.Find<T>(x=> x.Code == searchValue);
或
int index = MyClass.Find<T>(x => x.Name.ToUpper().StartsWith(searchValue.ToUpper()));
Lambda表达式可以实现吗?
对于提出同样要求的人,以下是正在运行的代码:
public int Find(Func<T, bool> whereClause)
{
return _list.IndexOf(_list.Where<T>(whereClause).FirstOrDefault<T>());
}
答案 0 :(得分:2)
我不确定你为什么认为你需要使用表达式树。假设list
是List<T>
,您应该可以使用FindIndex
:
int index = list.FindIndex(x => x.Code == searchValue);
如果不您需要什么,请向我们提供有关所涉及类型的更多信息。