簡體   English   中英

Linq to sql高效解決方案

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM