2017-01-16 7 views
0

Ich habe eine gespeicherte Prozedur mit mehreren Joins, zieht alle Daten in ein Resultset I.e im Dataset, jetzt möchte ich eine Linq-Abfrage darüber schreiben. Wie kann ich das machen?Linq Abfrage in gespeicherten Prozedur Ergebnismenge Ado.Net

Ich erwarte:

IEnumerable<SomeType> result; 

Dies ist, was ich versucht habe, aber nicht effizient aussehen [wo ich wissen muss, wie sich die Eigenschaften von Sometype definiert.].

SqlCommand cmd = new SqlCommand("Select top 10 * from trade"); 
cmd.Connection = con; 

if (con.State != ConnectionState.Open) 
{ 
    con.Open(); 
} 

SqlDataReader dr = cmd.ExecuteReader(); 
DataTable dt = new DataTable(); 

dt.Load(dr); 
var result = dt.AsEnumerable(); 

string valresukir = string.Empty; 

var sortResult = result.OrderBy(x => Convert.ToInt32(x["trade_num"]) > 12); 
string valuedata = string.Empty; 

foreach (var i in sortResult) 
{ 
    valuedata += i["trade_num"].ToString(); 
} 
+0

In einfachen Worten, ich möchte auf alle Zeilen der rowcollection loopen und eine generische Sammlung von einigen Typ ... Wie im obigen Beispiel können wir es einfach tun, indem Sie eine Klasse als Handel definieren und es nacheinander schleifen und hinzufügen es auf die Liste ... Muss ich eine Klasse für Store Proc erstellen oder EF tut es automatisch? und wie –

Antwort

0

zu können Linq-Abfrage auf Datentabelle wie

var data= from dataRow in dt.AsEnumerable() 
      where dataRow.Field<int>("trade_num") > 12 
      select dataRow 

wenn trade_num ganze Zahl schreiben. Nehmen Sie es als Beispiel und fügen Sie Ihre Bedingungen entsprechend hinzu.

Ich hoffe, es wird Ihnen helfen.

Verwandte Themen