2016-11-21 13 views
-4

私はレコードをグループ化する必要があります。たとえば、私は150のレコードを持っており、5つのグループ、各グループの30のレコードでそれらを取得する必要があります。グループ内のレコードを取得するLINQ

誰でも私にこれを達成する方法を教えてもらえますか?

ありがとうございます。

+2

グループ化する必要があるレコードのデータ構造はどのように見えますか?無差別にグループ化する必要がありますか(例:1-30,31-60,61-90など)、グループ化するフィールドがありますか? – pieperu

+0

新しいグループを作成するにはどうすればよいですか?もしあなたが10の商品を持っていたら?この場合、あなたはいくつのグループを望みますか?あなたが達成したいことは明確ではありません。 – Dieterg

+2

GroupByは行く方法です。もっと精巧な答えをしたいですか?もっと精巧な質問を書いてください。 – Alex

答えて

0
var groups = myRecords.Select((e, i) => new { Item = e, Grouping = (i/5) }).GroupBy(e => e.Grouping); 
+1

このコードは問題を解決するかもしれませんが[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-回答)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 –

0
var g1 = records.Take(30); 
var g2 = records.Skip(30).Take(30); 
... 

番号150と30は一例であれば、あなたは簡単にループ内で(pageIndexパラメータ* pageSizeを).Take(pageSizeを)をスキップ置くことができます。

+0

もちろん、これは 'records'が確定的な順序であることを前提としています –

+0

@RowlandShawまたは順序は関係ありません:) – mayu

+0

' g2' *確定的な順序でなければ 'g1'の結果を繰り返すことができます、結果が返されないバグが発生します。 –

0

あなたはまた、MoreLinqで簡単にそれを行うことができます。

var items = list.Batch(30); 
0

そこには特定のグループは、プロパティによってませんし、ちょうどこの後、特定のサイズでそれらをしたい場合:

static class LinqExtensions 
{ 
    public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int parts) 
    { 
     int i = 0; 
     var splits = from item in list 
        group item by i++ % parts into part 
        select part.AsEnumerable(); 
     return splits; 
    } 
} 

ありがとうHassan Kahn

0

異なる部門を持つリスト名EmployeeListがあるとします。従業員別にグループ化する必要があります

 public class Employee 
     { 
     public string Name { get; set; } 
     public string Department { get; set; } 

     } 
    public class EmployeeDepartMentList 
    { 
     public string DepartMentName {get;set; } 
     public List<Employee> EmployeeList { get; set; } 

    } 
    public class FinalResult 
    { 
     public List<EmployeeDepartMentList> GetEmployeesByDepartment() 
     { 
      List<Employee> EmployeeList = new List<Employee>(); 

      var Model = EmployeeList.Select(x => x.Department).Distinct().Select(x => new EmployeeDepartMentList 
      { 
       DepartMentName = x, 
       EmployeeList = EmployeeList.Where(y => y.Department == x).ToList() 

      }).ToList(); 
      return Model; 
     } 

    } 
関連する問題