-2

以下を含むドキュメントがあります。

    1> Id: "10204"; FromCity:"Vadodara"; ToCity:"Surat"; OfficeId:{"office1","Office2","Office3"} // row-1
    2> Id: "10205"; FromCity:"Ahmedabad"; ToCity:"Surat"; OfficeId:{"office2","Office3","Office4"} // row-2

次に、私の出力は次のようになります。

    office1 - 1;
    Office2 - 2;
    Office3 - 2;
    Office4 - 1;

LINQを使用してこれを手伝ってください。配列とその単一のカウントを単一のドキュメントに分割しました。

var OfficeID = results2
                .GroupBy(frm => new { frm.ItemNumber },
                (key, group) => new
                {
                    Key1 = key.ItemNumber,
                    Count = group.Sum(e => e.Count)
                });

事前に感謝します私はこれをしました:

        var OfficeId= results2.SelectMany(@class => @class.ItemNumber)
            .GroupBy(s => s).Select(a => new { officeId = a, count = a.Count() });


        foreach (var i in OfficeId)
        {
            Console.WriteLine(i.officeId+"\t"+i.count);
        }

しかし、OfficeId 名がループに表示されません

4

2 に答える 2

1

このアプローチを試してください。

class MyClass
{
    public int id { get; set; }
    public string[] officeId { get; set; }
}

var objects = new List<MyClass>
                  {
                      new MyClass{id=1, officeId=new[]{"office1","Office2","Office3"}},
                      new MyClass {id=2,officeId=new[]{"office1","Office2","Office3"}},
                      new MyClass{id=3, officeId=new[]{"office1","Office2","Office3"}}
                  };


var enumerable = objects.SelectMany(@class => @class.officeId).GroupBy(s => s).Select(a => new { officeId = a.Key, count = a.Count() });
于 2013-10-03T11:01:56.600 に答える