我可以在LINQ中声明/使用一些变量吗
例如,我可以写下面的LINQ更清晰吗?
var q = from PropertyDescriptor t in TypeDescriptor.GetProperties(instance)
where (t.ComponentType.GetProperty(t.Name) != null)
select t.ComponentType.GetProperty(t.Name);
这里有没有办法不写/调用t.ComponentType.GetProperty(t.Name)
两次?
发布于 2013-08-05 19:33:33
var q = from PropertyDescriptor t in TypeDescriptor.GetProperties(instance)
let u = t.ComponentType.GetProperty(t.Name)
where (u != null)
select u;
发布于 2013-08-05 19:33:39
您需要let
var q = from PropertyDescriptor t in TypeDescriptor.GetProperties(instance)
let name = t.ComponentType.GetProperty(t.Name)
where (name != null)
select name;
如果你想用查询语法来做这件事,你可以用一种更高效、更干净的方式(afaik)来做:
var q = TypeDescriptor
.GetProperties(instance)
.Select(t => t.ComponentType.GetProperty(t.Name))
.Where(name => name != null);
发布于 2013-08-05 19:34:08
是的,使用let
关键字:
var q = from PropertyDescriptor t in TypeDescriptor.GetProperties(instance)
let nameProperty = t.ComponentType.GetProperty(t.Name)
where (nameProperty != null)
select nameProperty;
https://stackoverflow.com/questions/18057090
复制相似问题