C# 对元组列表排序
我有一个元组列表,如下所示:C# 对元组列表排序,c#,list,tuples,C#,List,Tuples,我有一个元组列表,如下所示: List<Tuple<Material, Material>> materials 我想对Materials列表进行排序,以便首先完成Item2填充的元组(至少不为null) 我猜是这样的 foreach(var material in materials.OrderBy(*something*)) { // Do stuff } 然而,我还没有真正找到一种方法来做到这一点 如果您只想要带有item2的=空首先,您可以执行以下操作
List<Tuple<Material, Material>> materials
我想对Materials列表进行排序,以便首先完成Item2填充的元组(至少不为null)
我猜是这样的
foreach(var material in materials.OrderBy(*something*))
{
// Do stuff
}
然而,我还没有真正找到一种方法来做到这一点 如果您只想要带有
item2的=空
首先,您可以执行以下操作:
var materialslist = materials.Where(x => x.Item2 != null)
.Concat(materials.Where(x => x.Item2 == null)).ToList();
foreach(var material in materialslist)
{
//Do Stuff
}
如果您只想要带有
item2的=空
首先,您可以执行以下操作:
var materialslist = materials.Where(x => x.Item2 != null)
.Concat(materials.Where(x => x.Item2 == null)).ToList();
foreach(var material in materialslist)
{
//Do Stuff
}
您可以按顺序排序,如果不为空,则给出值“0”,如果为空,则给出值“1”
这样,空值将在最后消失。首先是所有的“0”(不为空),然后是所有的“1”(为空)您可以按顺序排序,如果不为空,则给出值“0”,如果为空,则给出值“1”
这样,空值将在最后消失。首先是所有“0”(非空),然后是所有“1”(空)谢谢,让我试试看。我刚刚尝试了materialen.OrderBy(f=>f.Item2!=null)。然后是by(f=>f.Item2==null),但是如果Item2为null,它似乎不会返回任何项目。虽然我的答案有效,但我认为@OfirWinegarten更优雅。是的,我也非常喜欢你的答案。我投你一票!谢谢,让我试一试。我刚刚尝试了materialen.OrderBy(f=>f.Item2!=null)。然后是by(f=>f.Item2==null),但是如果Item2为null,它似乎不会返回任何项目。虽然我的答案有效,但我认为@OfirWinegarten更优雅。是的,我也非常喜欢你的答案。我投你一票!“我想对材质列表进行排序,以便首先完成填充了Item2(至少不为null)的元组。”“我想对材质列表进行排序,以便首先完成填充了Item2(至少不为null)的元组。”这是一个很好的解决方案+1这是一个很好的解决方案+1.
foreach(var material in materials.OrderBy(t=>t.Item2 == null ? 1 : 0))
foreach(var material in materials.OrderByDescending(s => s.Item2 != null));