我有2个LINQ-to-SQL列表,我使用以下方法将它们合并到1个列表中:
var mergedList = List1.Union(List2);
我假设Union命令将消除列表中的所有dupes。是对的吗?无论如何,我正在尝试将合并列表的内容写入csv文件。当我尝试调用列表时出现错误:
WriteToCSVFile cf = new WriteToCSVFile(mergedList);
这就是我构建课程的方式:
public WriteToCSVFile(IEnumerable<T> mergedList)
我在这里做错了什么?
不过,这是我得到的错误:The type arguments for method 'WriteToCSVFile.WriteToCSVFile(System.Collections.Generic.IEnumerable<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
如果您需要更多信息,请告诉我们。并提前感谢。
答案 0 :(得分:3)
你需要让你的班级通用
public class WriteToCSVFile<T>
{
public WriteToCSVFile(IEnumerable<T> mergedList)
{
}
...
}
并且在调用它时指定泛型参数类型,因为无法从构造函数推断泛型类型:
var cf = new WriteToCSVFile<TheTypeOfElementsInYourList>(mergedList);
类型推断仅适用于方法,因此您可以编写extension method:
public static class CsvExtensions
{
public static void WriteToCSVFile<T>(this IEnumerable<T> list)
{
...
}
}
然后:
mergedList.WriteToCSVFile();
哦,我真诚地希望你是not rolling your own CSV parser,是吗?
答案 1 :(得分:0)
匿名类型不能用作泛型方法的类型参数。
答案 2 :(得分:0)
由于您的方法是通用方法,我猜您传递非通用列表。我想你的列表类型定义为
List list1= new List();
应该定义为
List<yourType> list1 = new List<yourType>();