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;
})