1

我正在尝试编写一个Linq语句,允许我返回一个不同的列表

obj1 objects that contain obj2.sID == ASpecified# or obj3.sID == ASpecified#.

我试图包括一个我的实体图的例子,希望我的问题更有意义,但可惜我没有足够的声誉。所以我想我只需要在代码中完成它。下面是我的对象。

public class obj1
{
    public int obj1_id { get; set; }
    public String obj1Prop1 { get; set; }
    public String obj1Prop2 { get; set; }
    public List<obj2> obj2List { get; set; }
    public List<obj3> obj3List { get; set; }
}
public class obj2
{
    public int obj2_id { get; set; }
    public String obj2Prop1 { get; set; }
    public String obj2Prop2 { get; set; }
    public Int32 sID { get; set; }
}
public class obj3
{
    public int obj3_id { get; set; }
    public String obj3Prop1 { get; set; }
    public String obj3Prop2 { get; set; }
    public Int32 sID { get; set; }
}

我对简单的 linq 语句相当精通,但对这个语句有点不满意。我在想我需要通过sID加入obj3obj2但我不确定。

任何帮助或方向将不胜感激。

4

1 回答 1

2

不需要加入。
尝试以下代码片段

var o1 = new List<obj1>(); // Add items to list
var specificId = "123"; // specific id
var listObj1 = o1.Where(o => o.obj2List.Any(o2 => o2.sID == specificId) ||
                             o.obj3List.Any(o3 => o3.sID == specificId)).ToList();
于 2013-01-11T19:50:05.550 回答