2011-11-15 60 views
-1

這裏是我的情況:我有2個存儲過程我習慣叫我的數據:如何在LINQ中有結果類連接到3個表?

  • 點擊
  • 的唯一身份

他們都返回相同的結果,但來自不同的表。情況是我正在使用一種叫做TargetRate()的方法,而不是把它放在兩個類的部分中,我想要一個結果類型是一個類,在那裏我可以共享TargetRate函數和其他函數,而不必在兩個函數中重寫函數我做出改變。

例如

  • HitsProcedure
  • UniquesProcedure
  • =返回類型統計

我想使用對象Stat的輸出我的結果以及使用共享的方法。有人可以解釋我將如何做到這一點?

感謝

+3

您將需要重新解釋這個 - 我已經看過兩遍兩次都沒有意義。 – JonH

+0

你如何從不同的表格返回相同的結果?至少,返回值將是不同類型的(即,與該特定表關聯的LINQ-to-SQL DBML類型)。 – mellamokb

+0

嗨,很抱歉,我想分享多個結果類型之間的方法,或者將一個結果類型與可應用於我的數據的方法分享。 – Darren

回答

1

您正在尋找這樣的事情:

public abstract class Stats 
{ 
    // put your fields here 
    public bool Exists { get; set; } 
    public int Count { get; set; } 
    public Frob Foo { get; set; } 

    public abstract void Fill(); 
} 

public class UniquesProcedureStats : Stats 
{ 
    public override void Fill() 
    { 
     // make call to call Uniques 
     this.Exists = false; 
     this.Count = 1 
    } 
} 

public class HitsProcedureStats : Stats 
{ 
    public override void Fill() 
    { 
     // make call to call HitsProcedure 
     this.Exists = true; 
     this.Foo = new Frob(); 
    } 
} 

或者,也許是這樣的:

public abstract class Stats 
{ 
    // put your fields here 
    public bool Exists { get; set; } 
    public int Count { get; set; } 
    public Frob Foo { get; set; } 

    public abstract void Fill(string procedureName) 
    { 
     SqlConnection connection = new SqlConnection("Get your own connection string"); 
     connection.Open(); 
     SqlCommand command = new SqlCommand(); 
     command.Connection = connection; 
     command.CommandText = procedureName; // your query may be more complicated than this? 
     using (var reader = command.ExecuteReader()) 
     { 
      reader.Read(); 
      this.Count = (int)reader["Count"]; 
     } 
    } 
} 
+0

如何獲得調用抽象類屬性的類? – Darren

+0

他們必須是方法參數嗎? – Darren

+0

@Darren我不認爲你需要知道哪個類?你將不得不提供額外的關於你真正想要什麼的信息 – McKay

相關問題