Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在传递类型为var的变量-未知类型_C#_Variables_Lambda_Ienumerable_Var - Fatal编程技术网

C# 正在传递类型为var的变量-未知类型

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

我有以下代码行:

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

我想将组传递到另一个类方法:

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)