2009-11-13 68 views
0

我有一個LINQ到實體「客戶」以及「報告」的SQL架構。每個客戶都有零個或多個報告。LINQ到SQL - 鏈接列表

我希望客戶擁有LinkedList屬性,以便我可以輕鬆訪問每個報表的下一個和上一個實體。

什麼是最好的方式,如果有的話,實現這個使用LINQ to SQL?

感謝

回答

0

通過LINQ to SQL設計(編譯DBML文件)創建的所有實體分部類。所以,你可以很容易地添加新類解決方案稱爲客戶是這樣的:

public partial class Customer 
{ 
} 

您可以在其中放置了幾個公共屬性

public partial class Customer 
{ 
    public Report Previous {get { /*...*/ } } 
    public Report Next {get { /*...*/ } } 
} 

不過,我建議對這個設計。我會跟隨迭代報告的人去管理下一個報告和之前的報告。另一個更好的設計是爲客戶返回一個雙向枚舉器(我的大腦讓我失望或者我會爲模式和鏈接提供一個合適的名稱),您可以使用它來通過該集合的Next或Previous。

如果您仍想這樣做,您可以使用Skip()和Take()來管理Reports實體集合中的當前位置。

private int _skip = 0; 

// in Previous { get { 
_skip--; 
if(_skip < 0) _skip = 0; 
return this.Reports.Skip(_skip).Take(1).FirstOrDefault(); 

// in Next { get { (not optimized) 
_skip++; 
if(_skip >= this.Reports.Count()) _skip--; 
return this.Reports.Skip(_skip).Take(1).FirstOrDefault(); 
1

你可以去到您的LINQ的設計圖到SQL CLAS並右鍵單擊客戶框頭,然後選擇添加 - >協會。 我會出現對話框,然後在你選擇的客戶端作爲父類,報告爲子類,選擇customerid列。 現在在Linq Customer課程中,您可以訪問他們擁有的所有報告。 希望它helpls。