2

次のコード行があります。

var groups = inputRows.GroupBy(x => new { x.stateCIP, x.facultyRank });

グループを別のクラスメソッドに渡したい:

OutputFileWriter.write(groups);

ただ、writeメソッドの入力パラメータはvarを取らないので、どの型を宣言すればいいのかわかりません。

public static void write(?????? groups)

変数グループ領域にマウスを置いたときに表示されるメッセージの写真を添付し​​ました。ここに画像の説明を入力

4

5 に答える 5

1

1 つの方法は、現在行っている匿名型を作成する代わりに、stateCIP と教員ランクの 2 つのプロパティを持つクラスを作成し、それを使用することです。次に、匿名型の代わりにそれをメソッドに渡すことができます

var groups = inputRows.GroupBy(x => new { x.stateCIP, x.facultyRank }) の代わりに

試す

var groups = inputRows.GroupBy(x => new MyClass(StateCIP = x.stateCIP, FacultyRank = x.facultyRank });

それからあなたはすることができます

public static void write(IEnumerable<MyClass> groups)

または、Write メソッドでグループからアイテムを追加または削除するなど、それらを反復処理するグループ オブジェクトをさらに処理する場合は、メソッドを呼び出すときに、次を使用して IEnumerable を List に変換します。

var groups = inputRows.GroupBy(x => new MyClass(StateCIP = x.stateCIP, FacultyRank = x.facultyRank }).ToList();

次に、メソッドを次のように記述します

public static void write(IList<T> groups)
于 2012-04-03T21:31:53.327 に答える
0

多分このようなもの:

public class MyObject
{
     public string stateCIP { get; set; }
     public string facultyRank { get; set; }
}

次のような呼び出し:

var groups = inputRows.GroupBy(x => new MyObject()
{
    stateCIP= x.stateCIP,
    facultyRank= x.facultyRank
}).ToList();

そして、次のような関数:

public static void write(List<IGrouping<MyObject,YourTableEntity>> groups)
{
}
于 2012-04-03T21:36:16.460 に答える
0

メソッドのように渡す解決策は、次のように渡すことです

IEnumerable

たとえば、次のように書くことができます。

public static void write(IEnumerable groups)

または、次のようにテンプレート化できます。

public static void write<T>(IEnumerable<T> groups)
于 2012-04-03T21:37:32.403 に答える
0

当然のことながら、これはTigranの回答を強化したものです。

クエリが を返すIEnumerable<IGrouping<'a, InputRow>>ため、匿名型を型パラメーター (ここでは ) に置き換えると、メソッドは一般的にそれを受け入れることができますT。単なる (Tigran の提案) よりも具体的な型を使用することIEnumerable<T>で、シーケンスの要素を IGrouping オブジェクトとして扱うことができます。

public static void write<T>(IEnumerable<IGrouping<T, InputRow>> groups)
{
    foreach (var group in groups)
        foreach (var inputRow in group)
            //do something...
}

Key のメンバー (つまり、匿名型のインスタンス) にアクセスする必要がない場合、これは非常にうまく機能します。ここでは、これらの値はクエリ式によって暗示されるように InputRow 型でも使用できるため、それらは必要ありません。

于 2012-04-03T22:24:58.603 に答える
0

.NET 4.0 を使用していて、グループ内の個々の項目にあるためグループ化情報が必要ない場合は、次を使用できます。

public static void write(IEnumerable<IEnumerable<InputRow>> groups)
于 2012-04-03T23:13:48.627 に答える