我用它来从我的数据库中获取材料清单......
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查询分配给变量并返回它...这是一个好/坏的做法?我应该使用哪些建议?
答案 0 :(得分:3)
没有真正的区别。在发布/优化版本中,我希望编译器能够删除额外的本地版本。如果要在返回之前放置断点并检查值,或者如果要应用其他条件过滤,则使变量很有用,例如:
if(applySort) { materials = materials.OrderBy(x => x.Name); }
在您的示例中,它不会添加任何内容,但它也不会花费任何内容。随意保持它;特别是如果你认为它使代码更容易阅读。
答案 1 :(得分:1)
没有区别,但通常我会使用第一个版本,如果我想在返回之前查看数据,可以更容易在visual studio中设置监视或断点。