C# 通过排序从变量列表创建多级列表 类维度 { 公共int b{get;set;} 公共int d{get;set;} 公共整数截长{get;set;} } 公共无效FramingID() { var DimList=新列表(); 添加(新的维度{b=2,d=4,CutLength=10}); 添加(新尺寸{b=10,d=5,截长=20}); 添加(新尺寸{b=4,d=6,CutLength=30}); 添加(新尺寸{b=4,d=2,截长=40}); 添加(新尺寸{b=2,d=2,截长=50}); 添加(新尺寸{b=6,d=4,截长=60}); 添加(新尺寸{b=2,d=2,截长=70}); 添加(新尺寸{b=2,d=5,截长=80}); 添加(新尺寸{b=6,d=2,截长=80}); 添加(新尺寸{b=2,d=2,截长=50}); 变量顺序=从DimList orderby m.b、m.d、m.CutLength中的m开始选择m; 变量顺序=从DimList orderby m.b、m.d、m.CutLength中的m开始选择m; foreach(变量n按顺序排列) { Console.WriteLine(n.b.ToString()+“x”+n.d.ToString()+“x”+n.CutLength.ToString()); } }

C# 通过排序从变量列表创建多级列表 类维度 { 公共int b{get;set;} 公共int d{get;set;} 公共整数截长{get;set;} } 公共无效FramingID() { var DimList=新列表(); 添加(新的维度{b=2,d=4,CutLength=10}); 添加(新尺寸{b=10,d=5,截长=20}); 添加(新尺寸{b=4,d=6,CutLength=30}); 添加(新尺寸{b=4,d=2,截长=40}); 添加(新尺寸{b=2,d=2,截长=50}); 添加(新尺寸{b=6,d=4,截长=60}); 添加(新尺寸{b=2,d=2,截长=70}); 添加(新尺寸{b=2,d=5,截长=80}); 添加(新尺寸{b=6,d=2,截长=80}); 添加(新尺寸{b=2,d=2,截长=50}); 变量顺序=从DimList orderby m.b、m.d、m.CutLength中的m开始选择m; 变量顺序=从DimList orderby m.b、m.d、m.CutLength中的m开始选择m; foreach(变量n按顺序排列) { Console.WriteLine(n.b.ToString()+“x”+n.d.ToString()+“x”+n.CutLength.ToString()); } },c#,revit,C#,Revit,结果: 2x2x50 2x2x50 2x2x70 2x4x10 2 x 5 x 80 4 x 2 x 40 4 x 6 x 30 6x2x80 6x4x60 10 x 5 x 20 我试图使用上面代码中的相同逻辑创建一个多级列表,但不同之处在于列表中的值不是预定义的值a。下面代码中的预期结果与上面的代码相同,但无法预定义值 这些值需要从一组元素中搜索,然后添加到列表中,并相应地按升序排列 我如何在不使用for循环或foreach循环的情况下将列表中的值作为整数添加,因为这两个循环都不能用于排序,

结果: 2x2x50
2x2x50
2x2x70
2x4x10
2 x 5 x 80
4 x 2 x 40
4 x 6 x 30
6x2x80
6x4x60
10 x 5 x 20

我试图使用上面代码中的相同逻辑创建一个多级列表,但不同之处在于列表中的值不是预定义的值a。下面代码中的预期结果与上面的代码相同,但无法预定义值 这些值需要从一组元素中搜索,然后添加到列表中,并相应地按升序排列 我如何在不使用for循环或foreach循环的情况下将列表中的值作为整数添加,因为这两个循环都不能用于排序,因为值将单独添加 谢谢

类维度
{
公共int b{get;set;}
公共int d{get;set;}
公共整数截长{get;set;}
}
公共无效FramingID()
{
var doc=Application.ActiveUIDocument.Document;
FilteredElementCollector=新的FilteredElementCollector(单据);
ICollection StructuralFraming=类别(BuiltInCategory.OST_StructuralFraming).ToList()的类别(类型(FamilyInstance)))的收集器;
List bIntegerList=(从结构框架中的元素选择Convert.ToInt32(doc.GetElement(Element.GetTypeId()).LookupParameter(“b”).AsValueString()).ToList();
List dIntegerList=(从结构框架中的元素选择Convert.ToInt32(doc.GetElement(Element.GetTypeId()).LookupParameter(“d”).AsValueString()).ToList();
List ClIntegerList=(从结构框架中的元素选择Convert.ToInt32(Element.LookupParameter(“剪切长度”).AsValueString()).ToList();
var DimList=新列表();
添加(新维度{b=bIntegerList,d=dIntegerList,CutLength=ClIntegerList});
变量顺序=从DimList orderby m.b、m.d、m.CutLength中的m开始选择m;
foreach(变量n按顺序排列)
{           
TaskDialog.Show(“TEST”,n.b.ToString()+“x”+n.ToString()+“x”+n.ToString());
}
}
还有测试代码

ElementX dimensionB = new ElementX { Xvalue = 10 , Id = 999 }
ElementX dimensionD = new ElementX { Xvalue = 80 , Id = 999 }
ElementX dimensionCutLength = new ElementX { Xvalue = 800 , Id = 999 }
static void Main(字符串[]args)
{
List bIntegerList=newlist{newelementx{Xvalue=6,Id=77},
新元素x{Xvalue=3,Id=66},
新元素x{Xvalue=8,Id=65};
List dIntegerList=new List{new ElementX{Xvalue=30,Id=66},
新元素x{Xvalue=60,Id=77},
新元素x{Xvalue=80,Id=65};
List ClIntegerList=new List{new ElementX{Xvalue=800,Id=65},
新元素x{Xvalue=600,Id=77},
新元素x{Xvalue=300,Id=66};
var wrapperList=bIntegerList.Join(dIntegerList,
x=>x.Id,
y=>y.Id,
(x,y)=>new{b=x.Xvalue,d=y.Xvalue,Id=y.Id});
var dimList=wrapperList.Join(ClIntegerList,
x=>x.Id,
cl=>cl.Id,
(x,cl)=>新尺寸{b=x.b,d=x.d,截长=cl.Xvalue});
变量顺序=从dimList orderby m.b、m.d、m.CutLength中的m开始选择m;
foreach(变量n按顺序排列)
{
Console.WriteLine(“测试工作”+n.b.ToString()+“x”+n.d.ToString()+“x”+n.CutLength.ToString());
}
输出


评论不适用于长时间的讨论;此对话已结束。
 class Dimensions
    {
      public int b { get; set; }
      public int d { get; set; }
      public int CutLength { get; set; }
    }

Public void FramingID()

{
 var doc = Application.ActiveUIDocument.Document;
FilteredElementCollector Collector = new FilteredElementCollector(doc);
ICollection<Element> StructuralFraming = Collector.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_StructuralFraming).ToList();

List<int> bIntegerList = (from Element element in StructuralFraming select Convert.ToInt32(doc.GetElement(element.GetTypeId()).LookupParameter("b").AsValueString())).ToList();
List<int> dIntegerList = (from Element element in StructuralFraming select Convert.ToInt32(doc.GetElement(element.GetTypeId()).LookupParameter("d").AsValueString())).ToList();
List<int> ClIntegerList = (from Element element in StructuralFraming select Convert.ToInt32(element.LookupParameter("Cut Length").AsValueString())).ToList();

var DimList = new List<Dimensions>();

DimList.Add(new Dimensions { b = bIntegerList, d = dIntegerList, CutLength = ClIntegerList});

var Order = from m in DimList orderby m.b, m.d, m.CutLength select m;

foreach (var n in Order)    
{           
 TaskDialog.Show("TEST", n.b.ToString() + " x " + n.ToString() + " x " + n.ToString());         
       }
}
    List<int> bIntegerList = new List<int> { 2, 5, 6, 3, 4 };
    List<int> dIntegerList = new List<int> { 20, 60, 30, 40, 50 };
    List<int> ClIntegerList = new List<int> { 300, 300, 200, 500, 600 };


   var wrapperList = bIntegerList.Zip(dIntegerList, (b, d) => new { b, d });

   var dimListReal = wrapperList.Zip(ClIntegerList, (w, cl) => new Dimensions() { b = w.b, d = w.d, CutLength = cl });

   var Order = from m in dimListReal orderby m.b, m.d, m.CutLength select m;

    foreach (var n in Order)
      {
         Console.WriteLine("Test working " + n.b.ToString() + " x " + n.d.ToString() + " x " + n.CutLength.ToString());
      }
    var doc = Application.ActiveUIDocument.Document;
    FilteredElementCollector Collector = new FilteredElementCollector(doc);
    ICollection<Element> StructuralFraming = Collector.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_StructuralFraming).ToList();      



    List<int> bIntegerList = new List<int> (from Element element in StructuralFraming select Convert.ToInt32(doc.GetElement(element.GetTypeId()).LookupParameter("b").AsValueString())).ToList();
    List<int> dIntegerList = new List<int>(from Element element in StructuralFraming select Convert.ToInt32(doc.GetElement(element.GetTypeId()).LookupParameter("d").AsValueString())).ToList();
    List<int> ClIntegerList = new List<int>(from Element element in StructuralFraming select Convert.ToInt32(element.LookupParameter("Cut Length").AsValueString())).ToList();



    var wrapperList = bIntegerList.Zip(dIntegerList, (b, d) => new { b, d });
    var dimListReal = wrapperList.Zip(ClIntegerList, (w, cl) => new Dimensions() { b = w.b, d = w.d, CutLength = cl });
    var Order = from m in dimListReal orderby m.b, m.d, m.CutLength select m;

        foreach (var n in Order)
        {
           TaskDialog.Show("Test", n.b.ToString() + " x " + n.d.ToString() + " x " + n.CutLength.ToString());
        }
ElementX dimensionB = new ElementX { Xvalue = 10 , Id = 999 }
ElementX dimensionD = new ElementX { Xvalue = 80 , Id = 999 }
ElementX dimensionCutLength = new ElementX { Xvalue = 800 , Id = 999 }
static void Main(string[] args)
    {
        List<ElementX> bIntegerList = new List<ElementX> { new ElementX { Xvalue = 6, Id = 77},
                                                           new ElementX { Xvalue = 3, Id = 66 },
                                                           new ElementX { Xvalue = 8, Id = 65 } };

        List<ElementX> dIntegerList = new List<ElementX> { new ElementX { Xvalue = 30, Id = 66},
                                                           new ElementX { Xvalue = 60, Id = 77 },
                                                           new ElementX { Xvalue = 80, Id = 65 } };

        List<ElementX> ClIntegerList = new List<ElementX> { new ElementX { Xvalue = 800, Id = 65},
                                                           new ElementX { Xvalue = 600, Id = 77 },
                                                           new ElementX { Xvalue = 300, Id = 66 } };


        var wrapperList = bIntegerList.Join(dIntegerList,
                                            x => x.Id,
                                            y => y.Id,
                                            (x, y) => new { b = x.Xvalue, d = y.Xvalue, Id = y.Id }).ToList();

        var dimList = wrapperList.Join(ClIntegerList,
                                         x => x.Id,
                                         cl => cl.Id,
                                         (x, cl) => new Dimensions { b = x.b, d = x.d, CutLength = cl.Xvalue }).ToList();

        var Order = from m in dimList orderby m.b, m.d, m.CutLength select m;

        foreach (var n in Order)
        {
            Console.WriteLine("Test working " + n.b.ToString() + " x " + n.d.ToString() + " x " + n.CutLength.ToString());
        }