C# 正在传递类型为var的变量-未知类型
我有以下代码行: var groups=inputRows.GroupBy(x=>new{x.stateCIP,x.facultyRank}) 我想将组传递到另一个类方法:C# 正在传递类型为var的变量-未知类型,c#,variables,lambda,ienumerable,var,C#,Variables,Lambda,Ienumerable,Var,我有以下代码行: var groups=inputRows.GroupBy(x=>new{x.stateCIP,x.facultyRank}) 我想将组传递到另一个类方法: OutputFileWriter.write(groups); 但是,我不知道为write方法声明输入参数的类型,因为它不接受var public static void write(?????? groups) 我附上了一张当我将鼠标移到var groups区域时收到的消息的照片:一种方法是创建一个具有两个属性的类,s
OutputFileWriter.write(groups);
但是,我不知道为write方法声明输入参数的类型,因为它不接受var
public static void write(?????? groups)
我附上了一张当我将鼠标移到var groups区域时收到的消息的照片:一种方法是创建一个具有两个属性的类,stateCIP和facultyRank,然后使用它,而不是创建一个您现在正在做的匿名类型。然后,您可以将其而不是匿名类型传递到方法中 所以不是 var groups=inputRows.GroupBy(x=>new{x.stateCIP,x.facultyRank}) 试一试 那你就可以了
public static void write(IEnumerable<MyClass> groups)
然后把你的方法写成
public static void write(IList<T> groups)
公共静态无效写入(IList组)
可能是这样的:
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)
{
}
电话如下:
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)
{
}
然后函数如下所示:
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)
公共静态无效写入(IEnumerable组)
为了给应得的分数,这是Tigran答案的一个改进
如果您使用的是.NET 4.0,并且您不需要分组信息,因为分组信息位于组中的各个项目中,那么您的查询将返回一个
IEnumerable,您可以使用:
public static void write(IEnumerable<IEnumerable<InputRow>> groups)
公共静态无效写入(IEnumerable组)
您将如何在“write”方法中使用“groups”?我将在foreach循环中对其进行迭代,该循环有一个子foreach循环,每次访问一组项。编译器不喜欢这两个选项。@baxter:我在提交答案的那一刻意识到了这一点。它现在更新了。这应该有用。+1为我的答案提供灵感。更好的签名应该是write(IEnumerable)