【问题标题】:How to create text file from LINQ merged list?如何从 LINQ 合并列表创建文本文件?
【发布时间】:2012-01-25 16:24:16
【问题描述】:

我有 2 个 LINQ-to-SQL 列表,我使用以下方法将它们合并到 1 个列表中:

var mergedList = List1.Union(List2);

我假设 Union 命令将消除列表中的所有欺骗。那正确吗?无论如何,我正在尝试将合并列表的内容写入 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?) 

如果您需要更多信息,请告诉我。并提前致谢。

【问题讨论】:

    标签: c# linq linq-to-sql join


    【解决方案1】:

    你需要让你的类通用

    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,是吗?

    【讨论】:

    • 这可能是另一个线程的问题。合并 2 个 LINQ 列表后,如何保留表对象?我以为会,但似乎并非如此。
    • @inquisitive_one,这确实值得提出一个新问题。
    【解决方案2】:

    匿名类型不能用作泛型方法的类型参数。

    【讨论】:

    • 明确定义结果类。
    【解决方案3】:

    由于您的方法是通用方法,我猜您传递的是非通用列表。我猜你的列表类型被定义为

    List list1= new List();
    

    应该定义为

    List<yourType> list1 = new List<yourType>();
    

    【讨论】:

    • 是的,你是对的。这是我用来创建我的 LINQ 列表的内容:'var List1 = from uscomp in USdb.UScompanies join ussect in USdb.USsectors on uscomp.sector_code 等于 ussect.sector_code select new { uscomp.company_name, uscomp.ticker, ussect.描述}'
    猜你喜欢
    • 2016-08-22
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 2021-11-22
    • 2021-09-23
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多