C#IQueryable <t>我的代码有意义吗?</t>

时间:2010-05-04 03:59:39

标签: c# iqueryable

我用它来从我的数据库中获取材料清单......

  public IQueryable<MaterialsObj> FindAllMaterials()
    {
       var materials =  from m in db.Materials
           join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id
           select new MaterialsObj()
               {
                   Id = Convert.ToInt64(m.Mat_id),
                   Mat_Name = m.Mat_Name,
                   Mes_Name = Mt.Name,
               };
        return materials;
    }

但我在一个例子中看到了这个,

public IQueryable<MaterialsObj> FindAllMaterials()
{
   return from m in db.Materials
       join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id
       select new MaterialsObj()
           {
               Id = Convert.ToInt64(m.Mat_id),
               Mat_Name = m.Mat_Name,
               Mes_Name = Mt.Name,
           };
}

两种方法之间是否存在真正的巨大差异...将我的linq查询分配给变量并返回它...这是一个好/坏的做法?我应该使用哪些建议?

2 个答案:

答案 0 :(得分:3)

没有真正的区别。在发布/优化版本中,我希望编译器能够删除额外的本地版本。如果要在返回之前放置断点并检查值,或者如果要应用其他条件过滤,则使变量很有用,例如:

if(applySort) { materials = materials.OrderBy(x => x.Name); }

在您的示例中,它不会添加任何内容,但它也不会花费任何内容。随意保持它;特别是如果你认为它使代码更容易阅读。

答案 1 :(得分:1)

没有区别,但通常我会使用第一个版本,如果我想在返回之前查看数据,可以更容易在visual studio中设置监视或断点。