数据表到字典<int64,列出<string>&gt; </int64,列出<string>

时间:2012-12-23 02:33:43

标签: c# linq c#-4.0

此LINQ表达式无效:

dt.AsEnumerable().ToDictionary<Int64, List<string>> (
    dtRow => dtRow.Field<Int64>("CodeVal_1"),
    new List<string> {
        dtRow => dtRow.Field<string>("CodeVal_2"), 
        dtRow => dtRow.Field<string>("CountryCode")
    }
);

dtDataTable,我添加了对DataSetExtensions的引用。

这里是完整的代码

    using (DataSet dsIps = DbConnection.db_Select_Query("use mydb select * from tblCountryCodes"))
    {
        using (DataTable dt = dsIps.Tables[0])
        {
            dt.AsEnumerable().ToDictionary<Int64, List<string>>(
            dtRow => dtRow.Field<Int64>("CodeVal_1"),
            new List<string> {
                    dtRow => dtRow.Field<string>("CodeVal_2"), 
                    dtRow => dtRow.Field<string>("CountryCode")
                }
            );
        }
    }

错误列表enter image description here

1 个答案:

答案 0 :(得分:4)

根据附加信息,问题在于您没有将正确的参数传递给ToDictionary。它需要两个lambda,而不是lambda和List<>

这是固定代码的第一步:

dt.AsEnumerable().ToDictionary(
    dtRow => dtRow.Field<Int64>("CodeVal_1"),
    dtRow => new List<string> {
        dtRow.Field<string>("CodeVal_2"), 
        dtRow.Field<string>("CountryCode")
    }
);

编辑:使用错误版本的ToDictionary修复。