2

リストの where 句の結果を取得し、その結果セットを取得して、元のクエリの集計から構築されたすべてのフィールドを持つ新しい型を 1 つだけ作成したいと考えています。以下の基本的な例を考えると、2 つの linq ステートメントを 1 つに結合する方法はありますか? 元の場所に行がない場合は、null を返す必要があります。ありがとう!

    class Foo
    {
        public int A { get; set; }
        public int B { get; set; }
    }
    List<Foo> lst = GetFooList();

        var q = (from f in lst
                 where f.A > 3
                 select f).ToList();
        if (q.Count != 0)
        {
            var qq = new
            {
                MinA = q.Min(l => l.A),
                MaxB = q.Max(h => h.B),
            };
            // now do something with qq
        }

更新: 私の状況では、元のセットには多くのアイテムがありますが、where 句の後の結果セットは非常に小さいです。2 番目のセットを数回列挙しても問題ありません。また、これらのレコードから値を取得するには、セットで first と last を使用する必要があります。答えによるグループが私にとって最もうまくいくでしょう。集計方法は非常に興味深いものであり、別の用途があると思います。

4

2 に答える 2

2
( from f in GetFooList()
  where f.A > 3
  group f by 1 into g
  let MinA=g.Min(l=>l.A)
  let MaxB=g.Max(h=>h.B)
  select new {MinA, MaxB} ).SingleOrDefault()
于 2009-04-05T20:12:45.837 に答える