0

为糟糕的问题标题道歉 - 我不知道如何描述我在做什么,但这是我能想到的最好的,如果我所要求的有一个真实的名字,请编辑它!

我有程序,可以分配一组项目,然后分配一组输出。

我想通过它的项目获得该计划的所有输出作为输出的一大清单。我有这个:

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

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

我强行通过 Linq 并且找不到任何这样的例子(或者当我看到它时无法识别)。如何仅使用 Linq 而不是 for 循环和 Linq 来执行此操作,我将遍历每个 EntitySet 并将其内容添加到更大的列表中?

谢谢

4

4 回答 4

1

或者直接违背 linq 上下文:

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

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

于 2010-01-28T17:06:06.680 回答
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");

这是你想要做的吗?

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

帕特里克。

于 2010-01-28T16:08:55.320 回答
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
于 2010-01-29T09:18:13.837 回答
0

对于您要检索的数据类型,我仍然有些困惑。这是我的理解。

  1. 你有一个程序列表
  2. 每个 Program 可以有多个 Project
  3. 每个项目可以有许多输出。

目标:找到某种类型的所有输出。这是正确的吗?

看起来您没有检索与项目或程序相关的任何数据,所以这样的事情应该可以工作:

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

让我知道事情的后续。

帕特里克。

于 2010-01-29T16:08:58.520 回答