ターゲットの同盟ID(複数)で総人口の少ないユーザ10人分の村を抽出する

List<x_world> lxw = new List<x_world>(50000);
//map.sql読み込み
List<int> eaid = new List<int>() {[敵aid群]};

var v = (
  from xw in lxw
  where eaid.Contains(xw.aid)
  group xw by xw.uid into grp
  orderby grp.Sum(s => s.population)
  select new { xw = grp }
).Take(10);

LINQって訳判らん…どうにかでっち上げてみた