我有下面的代碼行:傳遞變量 - 未知類型
VAR組= inputRows.GroupBy(X =>新的{x.stateCIP,x.facultyRank});
我想通過組到另一個類方法:
OutputFileWriter.write(groups);
不過,我不知道是什麼類型來聲明輸入參數的寫入方法,因爲它不會採取變種。
public static void write(?????? groups)
我已附上信息的照片,我得到當我將鼠標放在VAR組區域:
我有下面的代碼行:傳遞變量 - 未知類型
VAR組= inputRows.GroupBy(X =>新的{x.stateCIP,x.facultyRank});
我想通過組到另一個類方法:
OutputFileWriter.write(groups);
不過,我不知道是什麼類型來聲明輸入參數的寫入方法,因爲它不會採取變種。
public static void write(?????? groups)
我已附上信息的照片,我得到當我將鼠標放在VAR組區域:
一種方法是創建一個類有兩個屬性,在stateCIP和facultyRank然後用而不是創建一個你現在正在做的匿名類型。然後你就可以傳遞,而不是匿名類型的到你的方法
所以不是 VAR組= inputRows.GroupBy(X =>新{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的使用到列表:
var groups = inputRows.GroupBy(x => new MyClass(StateCIP = x.stateCIP, FacultyRank = x.facultyRank }).ToList();
,然後寫你的方法
public static void write(IList<T> groups)
也許是這樣的:
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)
{
}
該解決方案通過類似的方法是通過像
IEnumerable
例如,你可以寫這樣的事情:
public static void write(IEnumerable groups)
或者您可以將其製作爲如下模板:
public static void write<T>(IEnumerable<T> groups)
+1爲我的答案提供靈感。更好的簽名是'寫入
爲了給出應有的分數,這是Tigran答案的一個提升。
你的查詢返回一個IEnumerable<IGrouping<'a, InputRow>>
,所以你的方法一般可以接受,如果你用類型參數替換匿名類型(這裏是T
)。通過使用更具體的類型不僅僅是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...
}
這將很好地工作,如果你不需要訪問的成員密鑰(即匿名類型的實例)。在這裏,你不需要它們,因爲這些值也可以在InputRow類型中使用,如查詢表達式所暗示的。
如果您使用的是.NET 4.0,因爲它是在組內的單個項目,你可以使用這個你不需要的分組信息:
public static void write(IEnumerable<IEnumerable<InputRow>> groups)
你們將如何使用「組」裏面的「寫「方法? – daniloquio 2012-04-03 21:27:40
我將在foreach循環中遍歷它,該foreach循環有一個子foreach循環來一次訪問一個組的項目。 – Baxter 2012-04-03 21:29:16