.net 具有lambda’的通用方法;业务对象集合中的标准

.net 具有lambda’的通用方法;业务对象集合中的标准,.net,.net-3.5,lambda,business-objects,.net,.net 3.5,Lambda,Business Objects,我的应用程序中的每个业务对象都有抽象类(BO) 还具有父(通用)集合来存储所有BO(命名为BOC-业务对象集合) 我想归档的是在Side BOC中创建的通用方法,类似于: public T GetBusinessObject (lambda_criteria) 因此,我可以将此方法称为类似于: Employee emp = BOC.GetBusinessObject( Employee.ID=123 ) 方法应使BO符合规定的lambda标准 有没有关于如何存档的提示?假设您的BOC从通用

我的应用程序中的每个业务对象都有抽象类(BO) 还具有父(通用)集合来存储所有BO(命名为BOC-业务对象集合)

我想归档的是在Side BOC中创建的通用方法,类似于:

public  T GetBusinessObject (lambda_criteria)
因此,我可以将此方法称为类似于:

Employee emp = BOC.GetBusinessObject( Employee.ID=123 )
方法应使BO符合规定的lambda标准


有没有关于如何存档的提示?

假设您的BOC从通用列表继承或在内部使用通用列表,这并不难:

T GetBusinesObject<T>( Func<T, bool> predicate )
{
    return this.FirstOrDefault( predicate );
}
T GetBusinesObject(Func谓词)
{
返回此.FirstOrDefault(谓词);
}
类似

T GetBusinessObject<T>(Predicate<T> constraint) where T : BO
T GetBusinessObject(谓词约束),其中T:BO
然后像这样打电话

GetBusinessObject<Employee>( e => e.ID = 123 )
GetBusinessObject(e=>e.ID=123)

也许?

如果这是一个通用集合,那么调用者应该已经(通过LINQ)能够使用:

BOC<Employee> boc = ...
// checks exactly 1 match, throws if no match
var emp = boc.Single(e => e.ID = 123);
// checks at most 1 match, null if no match
var emp = boc.SingleOrDefault(e => e.ID = 123);
// checks at least one match, throws if no match
var emp = boc.First(e => e.ID = 123);
// returns first match, null if no match
var emp = boc.FirstOrDefault(e => e.ID = 123);
BOC-BOC=。。。
//精确检查1个匹配项,如果没有匹配项则抛出
var emp=boc.Single(e=>e.ID=123);
//最多检查1个匹配项,如果不匹配则为null
var emp=boc.SingleOrDefault(e=>e.ID=123);
//检查至少一个匹配项,如果没有匹配项则抛出
var emp=boc.First(e=>e.ID=123);
//返回第一个匹配项,如果不匹配则返回null
var emp=boc.FirstOrDefault(e=>e.ID=123);

是这样吗?

我不确定它是否是一种通用方法——如果是,您肯定想要一种类型为/
可获取的
/什么的
?可能丢失了
?谢谢。但拟议方法的主体将如何?