[英]Linq to sql Efficient Solution
最近開始使用linq to sql,我不確定什么是查詢數據庫並僅獲得我所需的最有效方法。
DataContext db = new
DataContext(ConfigurationManager.AppSettings["myConnection"]);
Table<RatesClass> CurrencyRatestbl = db.GetTable<RatesClass>();
double Rate = 0.00;
Rate =
(from c in CurrencyRatestbl
where c.From == "something"
select Convert.ToDouble(c.Rate)).Single();
我認為db.GetTable從表中獲取所有記錄,但我只想從db中獲取一條記錄,有沒有辦法做到這一點。
注意: linq查詢將始終獲得一條記錄“某物”是產品名稱,因此對於每個產品名稱,將有一個比率。
您也可以這樣:
using(DataContext db = new DataContext(ConfigurationManager.AppSettings["myConnection"]))
{
var rate=db.GetTable<RatesClass>()
.Where(a=>a.From == "something")
.Select(a=>Convert.ToDouble(a.Rate))
.SingleOrDefault();
}
我還認為,最佳做法是將數據庫上下文包含在using語句內。 這樣就可以根據需要打開與數據庫的連接。 get表在實際執行之前不會獲取所有記錄。
關系數據庫中的表表示為表集合(實現了IQueryable和IEnumerable之類的接口)。 DataContext有一個稱為GetTable <>()的方法; 它表示與表的潛在交互。 直到對結果執行迭代后,查詢才真正執行。 GetTable()的類型參數標識數據庫中的表 。
這里參考
Single()
如果你的ResultSet包含0或一個以上的元素......會拋出異常First()
或FirstOrDefault()
似乎是更適合你的情況。
DataContext db = new DataContext(ConfigurationManager.AppSettings["myConnection"]);
Table<RatesClass> CurrencyRatestbl = db.GetTable<RatesClass>();
double Rate = 0.00;
Rate = (from c in CurrencyRatestbl
where c.From == "something"
select Convert.ToDouble(c.Rate)).FirstOrDefault();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.