ForEach到Lambda,在C#中有两个列表

时间:2017-04-25 13:57:44

标签: c# list lambda

foreach (var item in lstObj)
        {
            item.links = new List<ObjTest>();
            foreach (var rel in item.relations)
            {
                foreach (var item2 in lstObj)
                {
                    if (rel.Object_ID2 == item2.ID)
                    {
                        item.links.Add(item2);
                    }
                }
            }
        }

我想把它改成lambda表达式,但我不明白!

以下是对象类:

ObjTest
    public int ID
    public string content;
    public List<ObjRelation> relations; //relations with other ObjTest object
    public List<ObjTest> links; //objTest objects of relations

ObjRelation
    public int ID;
    public int object_ID1;       
    public int object_ID2;

所以ObjTest包含两个列表,[relation]和[links]

在[关系]中,我们描述了ObjTest的关系。

在[Links]中,我们有与ObjTest链接的对象,与我们在关系列表中的对象ID有关。

我的目标是在lstObj中放入[links]对象提示,但是在lstObj中每个ObjTest的[relations]列表中显示的id(object_ID2)进行过滤。

我做到了,但我想把这个forEach翻译成lambda表达式。我尝试了一些事情,但它不起作用:/

1 个答案:

答案 0 :(得分:1)

这应该可行,但是你的foreach代码就像这样。

listObj.ForEach(item => { item.links = item.relations.Join(listObj.ToList(), x => x.object_ID2, y => y.ID, (x, y) => y); });