2010-01-28 77 views
0

對於不好的問題標題的道歉 - 我不知道如何描述我在做什麼,但這是我能想到的最好的,請編輯如果我要求的是真實的名字!使用Linq選擇實體,鏈接實體,鏈接實體的列表

我有程序,它可以分配一組項目,然後分配輸出組。

我想通過它的項目,以獲取該計劃的所有輸出作爲輸出的一個大名單。我有這樣的:

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

這基本上讓我輸出列表的列表。 (一個輸出的實體集)。

我很勉強通過Linq的方式,並找不到任何這樣的例子(或者當我看到它時無法識別)。我怎樣才能使用Linq而不是循環和Linq,我會通過每個EntitySet並將其內容添加到更大的列表中?

謝謝

回答

1

或者違背直接LINQ背景:

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

反向也可以工作,並從數據上下文的表直查詢。

+0

我覺得這是最好的選擇 - 我沒想到要對直接輸出 - 這是迄今爲止最簡單的選擇 - 我只需要創建一個輸出庫...乾杯布賴恩 – 2010-06-01 08:50:52

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"); 

這是你想要做的嗎?

如果不是,請詳細介紹一下數據結構以及您想要檢索的內容,我會盡我所能提供幫助。

帕特里克。

+0

嗨帕特里克,我現在已經離開了工作,但這個看起來不錯,我會嘗試明天,讓你知道,謝謝 – 2010-01-28 17:44:00

+0

嗨帕特里克,我想你的代碼,並不能得到我想要的東西。相反,我貼我的解決方案 - 這是不是很好,但應該給你最後的結果,我以後的想法。乾杯 – 2010-01-29 09:19:03

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 
0

我對你試圖檢索什麼樣的數據還是有點困惑。這是我的理解。

  1. 你有計劃
  2. 的列表中的每個程序可以有很多項目
  3. 每個項目可以有多個輸出。

目標:查找某種類型的所有輸出。這是正確的嗎?

它看起來並不像你檢索相關項目或程序,以便 這樣的事情應該工作的任何數據:

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

讓我知道如何去。

帕特里克。

+0

帕特里克嗨,你在右我想要一個類型的輸出列表,但我沒有可供選擇的輸出列表。我有一個列表清單。我想將所有列表合併成一個列表。該用於loopin我的答案是如何我已經做到了,但我認爲LINQ的將有一個更好的辦法。乾杯 – 2010-02-03 10:26:33