我更喜欢使用扩展方法进行基本的LINQ操作:Where()
,Select
但对于复杂的Select()
,SelectMany()
尤其是OrderBy().ThenBy()
语句,我发现查询语法更具可读性和自然性.
今天我发现自己有以下查询:
from c in _myObject.ObjectsParent.ParentsEnumerable
.Where(c =>
c == anotherObject || c.Parent == anotherObject)
from q in c.MyObjectsEnumerable
orderby c.SortKey, q.Description
select new { Item = q, Text = c.Description + " -> " + q.Description };
Run Code Online (Sandbox Code Playgroud)
混合查询和扩展语法是危险的(出于可读性,可维护性或任何其他原因)?
这有可能是非常主观的,如果是,我很抱歉,如果它不符合一个好的主观问题的要求.如果我可以改进它,请告诉我!
混合查询和扩展语法是危险的(出于可读性,可维护性或任何其他原因)?
我看到的最大危险是你的代码中可能会增加"惊喜",特别是在其他开发人员查看时.
从编译的角度来看,查询语法直接转换为扩展方法调用,因此这里不一定存在技术问题.但是,这可能会增加额外的方法调用,乍一看,许多开发人员都不会这样做.这可能会导致潜在的可维护性问题.
话虽这么说,如果谨慎而有充分理由,我不觉得混合语法存在真正的问题.这实际上很常见 - 例如,如果你想用查询语法编写,但需要完全评估,它通常用括号添加.ToList()添加 - 或者如果你想使用带有查询语法的PLINQ,它通常是from x in collection.AsParallel()
,这在技术上也是混合语法......
归档时间: |
|
查看次数: |
1211 次 |
最近记录: |