使用Linq选择实体列表,链接实体,链接实体

时间:2010-01-28 15:49:15

标签: linq list entities entityset

对于糟糕的问题标题道歉 - 我不知道如何描述我在做什么,但这是我能想到的最好的,如果我要求的是真名,请编辑它! / p>

我有程序,可以分配一组项目,而这些项目又分配了一组输出。

我希望通过它的项目获得该计划的所有产出作为一个重要的产出清单。我有这个:

From pp In Me.ProgrammeProjects Select pp.Project.Outputs

这基本上让我得到了一个输出列表列表。 (输出的EntitySet的不可数)。

我粗暴地强迫我穿过Linq并且找不到任何这样的例子(或者当我看到它时无法识别它)。我怎样才能使用Linq而不是for循环和Linq,我将遍历每个EntitySet并将其内容添加到更大的列表中?

由于

4 个答案:

答案 0 :(得分:1)

或直接反对linq上下文:

from o in context.Outputs
where o.Project.ProgrammeProjects.ID = 1
select o

反过来也可以直接从数据上下文表中查询。

答案 1 :(得分:0)

您是否想要获取特定计划的输出列表?

如果是这样,请尝试以下方法:

var result = (from pp in ProgrammeProjects
where pp.Name.Equals("ProjectA")
select pp.Project.Outputs).ToList();

获得输出列表后,可以使用lambda表达式获取子集。

var result = (from pp in ProgrammeProjects
select pp.Project.Outputs).ToList();

var subResult = result.FindAll(target => target.OutputParameter.Equals("findThisValue");

这是你想要做的吗?

如果没有,请详细说明数据结构以及您要检索的内容,我会尽力提供帮助。

帕特里克。

答案 2 :(得分:0)

这是我采用这种方式的方式,但是当数据量增加时,我可以说它会变慢。

    Dim allOutputs As New Generic.List(Of Output)

    Dim outputLists = From pp In Me.ProgrammeProjects Select pp.Project.Outputs.ToList

    For Each outputList In outputLists
        Dim os = From o In outputList Where o.OutputTypeID = Type Select o
        allOutputs.AddRange(os)
    Next

    Return allOutputs

答案 3 :(得分:0)

我仍然对您尝试检索的数据类型感到困惑。这是我的理解。

  1. 您有一个程序列表
  2. 每个程序可以有很多项目
  3. 每个项目可以有很多输出。
  4. 目标:查找特定类型的所有输出。这是对的吗?

    看起来您并没有检索到与项目或程序相关的任何数据 这样的事情应该有效:

       Dim allOutputs As Generic.List(Of Outputs) = (From output In Me.Outputs Where output.OutputType.Equals(Type) Select output).ToList()
    

    让我知道它是怎么回事。

    帕特里克。