其中谓词和表达式>>

发布于 2024-10-19 06:24:07 字数 714 浏览 0 评论 0 原文

我有这行代码,它返回 IList 中特定对象的索引

int index = list.IndexOf(list.Where(x => x.Code == searchValue).FirstOrDefault());

,并且我在很多地方都有类似的构造,它搜索不同属性的集合。我的目标是自动执行此操作,因此我可以使用通用方法 MyClass

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>());
}

I have this line of code that returns index of particular object in a IList<T>

int index = list.IndexOf(list.Where(x => x.Code == searchValue).FirstOrDefault());

and I have similar construction on many places, which searches collections on different properties. My goal is to automate this, so I can have a generic method MyClass<T>

int index = myClass.Find<T>(x=> x.Code == searchValue);

or

int index = MyClass.Find<T>(x => x.Name.ToUpper().StartsWith(searchValue.ToUpper()));

Is this possible with Lambda expressions?

Edit:

For anyone that is asking the same, here is the code that is working:

public int Find(Func<T, bool> whereClause)
{
    return _list.IndexOf(_list.Where<T>(whereClause).FirstOrDefault<T>());
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

假装爱人 2024-10-26 06:24:07

我不确定您为什么认为需要使用表达式树。假设 listList,您应该能够使用 FindIndex

int index = list.FindIndex(x => x.Code == searchValue);

如果这不是您所需要的,请向我们提供有关所涉及类型的更多信息。

I'm not sure why you think you need to use an expression tree. Assuming list is a List<T>, you should be able to use FindIndex:

int index = list.FindIndex(x => x.Code == searchValue);

If that's not what you need, please give us more information about what the types involved are.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文