多表选择

时间:2013-01-11 19:34:05

标签: .net linq list object linq-to-objects

我正在尝试编写一个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 ,但我不确定。

任何帮助或指示都将不胜感激。

1 个答案:

答案 0 :(得分: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();