C# 列表lambda

C# 列表lambda,c#,list,C#,List,我有一个对象,它包含许多列表,这些列表都是从ObjectCollection(T)派生的:IOObjectCollection(T) 我希望能够像遍历一个列表一样遍历这些列表,但是我希望将列表分开,并且我不希望从这些列表中投影新的列表。所以我想在P课上做这样的事情: public T GetObject<T>(IUniqueIdentifier identifier) where T : class { T dObject = A.FirstOrDefault(a =>

我有一个对象,它包含许多列表,这些列表都是从ObjectCollection(T)派生的:IOObjectCollection(T)

我希望能够像遍历一个列表一样遍历这些列表,但是我希望将列表分开,并且我不希望从这些列表中投影新的列表。所以我想在P课上做这样的事情:

public T GetObject<T>(IUniqueIdentifier identifier) where T : class
{
    T dObject = A.FirstOrDefault(a => a.GuidId == identifier) as T ?? H.FirstOrDefault(a => a.GuidId == identifier) as T ?? M.FirstOrDefault(a => a.GuidId == identifier) as T ?? T.FirstOrDefault(a => a.GuidId == identifier) as T;
    return Object;
}
public T GetObject(IUniqueIdentifier标识符),其中T:class
{
T dObject=A.FirstOrDefault(A=>A.GuidId==标识符)作为T??H.FirstOrDefault(A=>A.GuidId==标识符)作为T??M.FirstOrDefault(A=>A.GuidId==标识符)作为T??T.FirstOrDefault(A=>A.GuidId==标识符)作为T;
返回对象;
}
列表中的所有对象都派生自ObjectBase并具有GUI公共属性

但这似乎是一个垃圾解决方案。然后我就想做这样的事情:

List<IObjectCollection<ObjectBase>> _objects = new List<IObjectCollection<ObjectBase>>{A,C,H,M,T};
List_objects=新列表{A,C,H,M,T};
然后使用类似的方法(代码不精确!):

public T GetObject(Guid标识符),其中T:class
{
T Object=\u objects.FirstOrDefault(c=>c.Contains(identifier))作为T;
返回对象;
}
但是,唉,我就是想不出正确的方法

谢谢你的帮助


斯图。

像这样的东西不管用吗?虽然我不认为我有足够的背景来理解你为什么这样做

void Main()
{
var myObj=GetObject(guid、A、C、H、M、T);
}
公共T GetObject(Guid标识符,参数IObjectCollection[]集合)
其中T:ObjectBase
{
foreach(集合中的var集合)
{
var item=collection.FirstOrDefault(o=>o.GuidId==identifier);
如果(项目!=null)返回项目;
}
返回默认值;
}
公共类对象库
{
公共Guid GuidId{get;}
}

这似乎非常接近工作。。。您是否在
GetObject
方法中尝试过将
\u objects.FirstOrDefault(c=>c.GuidId==identifier)作为T
?或者可能是
A.Concat(c).Concat(H).Concat(M).Concat(T).FirstOrDefault(A=>A.GuidId==identifier)
?创建一个像
IEnumerable Enumerable EnumerateAll()
只在一组
foreach
循环中使用
收益率
List<IObjectCollection<ObjectBase>> _objects = new List<IObjectCollection<ObjectBase>>{A,C,H,M,T};
public T GetObject<T>(Guid identifier) where T : class
{
    T Object = _objects.FirstOrDefault(c => c.Contains(identifier)) as T;
    return Object;
}