0

私は、起訴番号と予約番号の複合キーに従って、公式IDであるrNIによって潜在的な複数の行を持つdivAssignmentsを持っています。

rNI    Booking  Indictment
12345  954445   10 12345
12345  954445   10 12346
12345  954445   10 12347

したがって、ID は、この rni の単一の予約番号に対して 3 のカウントを持ちます。

Number: を予約してカウントとグループを生成しようとして迷ってしまいました:

var moreThen = from dA in divAssignments
    select new { dA.rNI, IndictmentCount = dA.indictmentNumber.Count() };

ほとんどの例は static int[] を扱っており、私の場合はうまくいかないようです。

グループを取得してからカウントを取得するにはどうすればよいですか? 持つことができれば、それは素晴らしいことです。

t-sql POV から、私はこれを使用します:

Select rni, bookingNumber, count(*) IndictmentCount 
from divAssignments
group by rni, bookingNumber  
having count(*) > 0 

ティア

4

4 に答える 4

1

このようなものはどうですか:

var query = from item in divAssignments
group item by item.rNI into grouping
select new
{
  Id = grouping.Key,
  Count = grouping.Count()
}

rNI と予約番号の両方でグループ化することに興味がある場合は、次のように変更します。

var query = from item in divAssignements
   group item by new { item.rNI, a.Booking } into grouping
   select new
    {
      Id = grouping.Key,
      Count = grouping.Count
    };

また

var query = from item in divAssignments
    group item by item into grouping
    select new
    {
      Id = grouping.Key,
      Count = grouping.Count()
    }

等値比較をサポートするために、divAssignment オブジェクトに IEquatable を実装します。必要に応じてもう 1 つのオプションは、IEqualityComparerインスタンスを記述して、複合キーの比較を行うことです。クエリは次のようになります。

var query = 
  divAssignments
      .GroupBy(i => i, new MyCustomEqualityComparer())
      .Select(i => new { Key = i.Key, Count = i.Count());
于 2010-12-20T23:08:56.250 に答える
0
var query =
    from dA in divAssignments
    group dA by new { dA.rNI, dA.bookingNumber };

foreach(var grp in query)
{
    Console.WriteLine("rNI={0}, bookingNumber={1} => Count={2}", grp.Key.rNI, grp.Key.bookingNumber, grp.Count());
}
于 2010-12-20T23:14:19.700 に答える
0

Linq でグループ化演算子を使用すると、必要なものが得られます。コード:

  var count = from a in divAssignments
              group a by new { a.rNI, a.Booking } into b
              select b;

IGroupingオブジェクトのコレクションを返します。これにより、キー (この例では、rNI と Booking プロパティを持つ匿名型になります) と、キーに一致する divAssignments のコレクションが得られます。

于 2010-12-20T23:18:54.837 に答える
0

メソッド構文を使用する (私の意見では、はるかに読みやすい):

最初にレコードをグループ化し、次にカウントを含む各グループの新しい結果を選択します。

var groups = divAssignments.GroupBy(d => new { d.rNI, d.Booking });
groups.Select(g=> new { g.Key.rNI, g.Key.Booking, IndictmentCount = g.Count() });
于 2010-12-21T00:10:01.980 に答える