【发布时间】:2015-11-26 21:10:11
【问题描述】:
我有一个对象列表。 我有一个与列表类型相同的项目。
我想创建一个通用扩展方法(称为 Find),以根据单个 obj 及其强类型属性的任意列表从列表中查找项目。
这是我想调用该方法的方式:
var obj = new SomeObject() { ... } ;
var list = new List<SomeObject>() { ... };
// Find similar objects
list.Find(obj, x => x.Id,y => y.Description);
这种安排可行吗?
FirstOrDefault 将像下面的评论一样工作。但是,我正在寻找一种在可能不是简单查找的不同场景中使用该模式的方法。
【问题讨论】:
-
已经存在一个名为
Find的扩展方法,正如建议的那样,FirstOrDefault也可以轻松完成相同的工作。如果您需要在列表中找到满足您条件的所有元素,请使用Where扩展方法 -
您是在尝试根据匹配的属性值查找单个结果还是多个结果?
-
除了我在这里给出的简化问题之外,我更感兴趣的是如何在其他场景中使用或不使用这种模式。一个例子可能是查找一些类型信息并根据给定的属性打印。
-
我更新了我的答案。看看它是否是您正在寻找的东西。如果不是,你能解释一下吗?
标签: c# linq generics extension-methods