C# Linq到sql高效解决方案

C# Linq到sql高效解决方案,c#,linq-to-sql,c#-4.0,C#,Linq To Sql,C# 4.0,最近开始使用LINQtoSQL,我不确定查询数据库的最有效方法是什么,只能得到我需要的东西 DataContext db = new DataContext(ConfigurationManager.AppSettings["myConnection"]); Table<RatesClass> CurrencyRatestbl = db.GetTable<RatesClass>(); double Rate = 0.00; Rate = (fr

最近开始使用LINQtoSQL,我不确定查询数据库的最有效方法是什么,只能得到我需要的东西

  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();
DataContext db=new
DataContext(ConfigurationManager.AppSettings[“myConnection”]);
表CurrencyRatestbl=db.GetTable();
双倍费率=0.00;
比率=
(来自c的货币汇率stbl)
其中c.From==“某物”
选择Convert.ToDouble(c.Rate)).Single();
我认为db.GetTable可以从表中获取所有记录,但我只想从db中获取一条记录,有没有办法做到这一点。


注意:linq查询将始终获得一条记录“某物”是产品名称,因此对于每个产品名称都有一个单独的比率。

single()
如果结果集包含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();
DataContext db=newdatacontext(ConfigurationManager.AppSettings[“myConnection]”);
表CurrencyRatestbl=db.GetTable();
双倍费率=0.00;
汇率=(从c到当前汇率stbl)
其中c.From==“某物”
选择Convert.ToDouble(c.Rate)).FirstOrDefault();
Single()
如果结果集包含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();
DataContext db=newdatacontext(ConfigurationManager.AppSettings[“myConnection]”);
表CurrencyRatestbl=db.GetTable();
双倍费率=0.00;
汇率=(从c到当前汇率stbl)
其中c.From==“某物”
选择Convert.ToDouble(c.Rate)).FirstOrDefault();

您也可以这样做:

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();
}
使用(DataContext db=newdatacontext(ConfigurationManager.AppSettings[“myConnection”]))
{
var rate=db.GetTable()
.其中(a=>a.From==“某物”)
.Select(a=>Convert.ToDouble(a.Rate))
.SingleOrDefault();
}
我还认为最好的做法是在using语句中包含数据库上下文。这样,到数据库的连接就可以根据需要随时打开。get表在实际执行之前不会获取所有记录

关系数据库中的表表示为表集合 (它实现了IQueryable和IEnumerable等接口)。 DataContext有一个名为GetTable()的方法;它代表了一个 与视图表的潜在交互查询不正确 实际执行,直到对结果执行迭代为止。这个 GetTable()的type参数标识数据库中的表


参考

您也可以这样做:

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();
}
使用(DataContext db=newdatacontext(ConfigurationManager.AppSettings[“myConnection”]))
{
var rate=db.GetTable()
.其中(a=>a.From==“某物”)
.Select(a=>Convert.ToDouble(a.Rate))
.SingleOrDefault();
}
我还认为最好的做法是在using语句中包含数据库上下文。这样,到数据库的连接就可以根据需要随时打开。get表在实际执行之前不会获取所有记录

关系数据库中的表表示为表集合 (它实现了IQueryable和IEnumerable等接口)。 DataContext有一个名为GetTable()的方法;它代表了一个 与视图表的潜在交互查询不正确 实际执行,直到对结果执行迭代为止。这个 GetTable()的type参数标识数据库中的表


参考

linq查询将始终获得一条记录“某物”是产品名称,因此对于每个产品名称都有一个单独的费率。linq查询将始终获得一条记录“某物”是产品名称,因此对于每个产品名称都有一个单独的费率。+1用于解决OP的实际问题,这是一个错误的假设:“我认为db.GetTable可以从表中获取所有记录”@Arion是的,这就是我想知道的。。。谢谢竖起大拇指很乐意帮忙。。。快乐编码:)实际上,根本不需要GetTable。你的选择应该是rate=db.RatesClass.Where…,没错。但是老年退休金计划是关于这个功能的。这就是我发布该函数的方式。+1用于解决OP的实际问题,这是一个错误的假设:“我认为db.GetTable可以从表中获取所有记录”@Arion是的,这就是我想知道的。。。谢谢竖起大拇指很乐意帮忙。。。快乐编码:)实际上,根本不需要GetTable。你的选择应该是rate=db.RatesClass.Where…,没错。但是老年退休金计划是关于这个功能的。这就是我发布该函数的方式。