C# 如何在 LINQ Select 中使用三元条件
C# how to use ternary conditional inside LINQ Select
基本上,我正在使用 Revit API(土木工程 3D 建模程序)结合 C#。
在这种情况下,我需要使用元素名称填充 WPF 列表框。为此,我这样使用 LINQ:
beamTypes = new FilteredElementCollector(doc)
.OfCategory(BuiltInCategory.OST_StructuralFraming)
.OfClass(typeof(FamilyInstance))
.Select(x => x.get_Parameter(BuiltInParameter.ALL_MODEL_MARK) as Parameter).AsString())
.Distinct();
如果每个元素都有一个 MARK(我的客户工程师使用的自定义名称),那就太棒了。但是,并非每个元素都有定义的 MARK,如果没有,我想 select Element.Name.
会是这样的:
.Select(x => (x.get_Parameter(BuiltInParameter.ALL_MODEL_MARK) as Parameter).AsString().Equals("") ? x.Name : (x.get_Parameter(BuiltInParameter.ALL_MODEL_MARK) as Parameter).AsString())
如何在我的 LINQ 中正确使用三元。Select?
听起来这应该适合你
.Select(x => {
if (x.get_Parameter(BuiltInParameter.ALL_MODEL_MARK) is Parameter _param)
return _param.AsString();
return x.Name;
})
基本上,我正在使用 Revit API(土木工程 3D 建模程序)结合 C#。
在这种情况下,我需要使用元素名称填充 WPF 列表框。为此,我这样使用 LINQ:
beamTypes = new FilteredElementCollector(doc)
.OfCategory(BuiltInCategory.OST_StructuralFraming)
.OfClass(typeof(FamilyInstance))
.Select(x => x.get_Parameter(BuiltInParameter.ALL_MODEL_MARK) as Parameter).AsString())
.Distinct();
如果每个元素都有一个 MARK(我的客户工程师使用的自定义名称),那就太棒了。但是,并非每个元素都有定义的 MARK,如果没有,我想 select Element.Name.
会是这样的:
.Select(x => (x.get_Parameter(BuiltInParameter.ALL_MODEL_MARK) as Parameter).AsString().Equals("") ? x.Name : (x.get_Parameter(BuiltInParameter.ALL_MODEL_MARK) as Parameter).AsString())
如何在我的 LINQ 中正确使用三元。Select?
听起来这应该适合你
.Select(x => {
if (x.get_Parameter(BuiltInParameter.ALL_MODEL_MARK) is Parameter _param)
return _param.AsString();
return x.Name;
})