日期:2014-05-20  浏览次数:20747 次

关于linq优化的问题
Company是我自己写的一个类 里面有id和IQueryable<Tb_addxinxi>

  public IQueryable<Company> GCompanyList()
  {
  List<Company> sc = new List<Company>();
  Company cp=new Company();

  var ss = from cc in hr.As_company select new { cc.Tb_company.id, Tb_addxinxi = (from gg in hr.As_addcompanyxinxi where gg.Tb_company.id == cc.Tb_company.id select gg.Tb_addxinxi) };

  foreach(var s in ss){
  cp.id = s.id;
  cp.Tb_addxinxi = s.Tb_addxinxi;
  sc.Add(cp);
  cp = new Company();
  }

  return sc.AsQueryable();
  }
 
运行的时候经常提示
异常详细信息: System.Data.SqlClient.SqlException: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。
行 36: foreach(var s in ss){
行 37: cp.id = s.id;
行 38: cp.Tb_addxinxi = s.Tb_addxinxi;


请问有没有什么好办法优化?

------解决方案--------------------
public List <Company> GCompanyList()
{
    var tmp =(from  cc in hr.As_company 
              join  gg in hr.As_addcompanyxinxi
                on  gg.Tb_company.id
             Equls  cc.Tb_company.id
            select  new { cc.Tb_company.id,
                            gg.Tb_addxinxi
                         } 
).toList<Company>();
    return tmp;
}