.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Linq;
using System.Collections.Generic;

var witnesses = new List<Witness> 
{
	new Witness(null, true, 13),
	new Witness(null, false, 6),
	new Witness(null, false, 2)
};

var sorted = witnesses
	.OrderByDescending(x => x.m_hasLOS)
	.ThenBy(x => x.m_distanceToSqrt)
	.ToList();

foreach (Witness item in sorted)
{
	Console.WriteLine($"{item.m_hasLOS}, {item.m_distanceToSqrt}");
}


public class Witness
{
    public object m_mobile;
    public bool m_hasLOS;
    public double m_distanceToSqrt;
    public Witness(object m, bool hasLOS, double distanceToSqrt)
    {
        m_mobile = m;
        m_hasLOS = hasLOS;
        m_distanceToSqrt = distanceToSqrt;
    }
}
;