فهمیدم برای کار با sql چیکارکنم (لطفا اگه این روش بهینه نیست دوستان اطلاع بدن .ممنون)
public void Linq0() {
// Fill the DataSet.
ds = select();
DataTable products = ds.Tables["Table"];
//Query
IEnumerable<DataRow> query =
from product in products.AsEnumerable()
select product;
//Execute
Console.WriteLine("Product Names:");
foreach (DataRow p in query)
{
Console.WriteLine(p.Field <string>("name"));
}
}
والبته
private DataSet select()
{
SqlCommand Cmd = new SqlCommand("person", DALBase.GetConnectionString());
Cmd.CommandType = CommandType.StoredProcedure;
try
{
DALBase.Open_Connection();
Cmd.ExecuteNonQuery();
}
finally
{
DALBase.Close_Connection();
}
using (SqlDataAdapter DA = new SqlDataAdapter(Cmd))
{
DataSet DS = new DataSet();
DA.Fill(DS);
return DS;
}
}
فقط چند تا سوال دارم
1- اگه بخام داده رو از sql بگیرم و تو لیست بریزم چی کارکنم؟(تابع زیرچه کدی داره؟)البته این قبل از select است و نمیشه از ToList استفاده کردList<Product> products = GetProductList();
2- این رو نمیشناسه ObjectDumper
public void Linq17()
{
List<Customer> customers = GetCustomerList();
var orders =
from c in customers
from o in c.Orders
where o.Total >= 2000.0M
select new { c.CustomerID, o.OrderID, o.Total };
ObjectDumper.Write(orders);
}
3- در کد زیر db چیه؟Northwnd رو نمیشناسه ؟( به DataContext مربوط میشه اما آیتمشو پیدانکردم)
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
var q =
from c in db.Customers
where c.City == "London"
select c;
4-تو همین تالار دوستان گفته بودندوقتی شرط select رو تو پروسیجر (sql) می نویسی چون شرط عوض میشه مجدد باید پروسیجرکامپایل بشه و این سرعت رو پایین میاره. حالا وقتی از linq استفاده می کنی چون پروسیجر عوض نمیشه نیاز به کامپایل نیست .اما سوال: تو بانک داده با رکوردهای بالابا استفاده از linq با وجودی که ما مثلا یک رکورد رو سرچ می کنیم اما تمام رکوردها به برنامه پاس داده میشن و بعد فیلتر ونمایش .. انتقال حجم زیاد اطلاعات از سرور به کلاینت هاباعث افت سرعت میشه(برنامه های تجاری)!! حالا برتری linq رو چه طوری ثابت کنیم؟