【问题标题】:Linq to datasets - getting specific column value in C#Linq to datasets - 在 C# 中获取特定的列值
【发布时间】:2011-04-23 10:41:51
【问题描述】:

我正在尝试根据错误 ID 获取错误描述:

String errorDesc = from resultCodesTableRow in resultCodesDT.AsEnumerable()
                            where resultCodesTableRow.Field<int>("Error_Code_Column_Name") == errorCode
                            select resultCodesTableRow.Field<string>("Error_Desc_Column_Name").ToString();

为什么会出现错误:

“不能将类型'System.Data.EnumerableRowCollection'隐式转换为'string'”?

查询应该看起来如何?

【问题讨论】:

    标签: linq dataset


    【解决方案1】:

    改变 resultCodesDT.AsEnumerable()resultCodesDT.rows

    这行得通吗:

    where (int)resultCodesTableRow.GetItem("Error_Code_Column_Name") == errorCode
    select resultCodesTableRow.GetItem("Error_Desc_Column_Name")
    

    【讨论】:

      【解决方案2】:

      我不太确定实际的 LINQ 查询最有可能通过查看它返回什么,正如你所说的你得到错误它可能返回一个集合,所以为了避免对查询使用第一个或最后一个方法,即

      String errorDesc = 来自 resultCodesDT.AsEnumerable() 中的 resultCodesTableRow 其中 resultCodesTableRow.Field("Error_Code_Column_Name") == errorCode 选择 resultCodesTableRow.Field("Error_Desc_Column_Name").First().ToString();

      【讨论】:

        【解决方案3】:

        语句中的 Select 函数将返回一个 IEnumerable。 相反,您需要使用类似

        String errorDesc = (from resultCodesTableRow in resultCodesDT.AsEnumerable()
                                    where resultCodesTableRow.Field<int>("Error_Code_Column_Name") == errorCode
                                    select resultCodesTableRow.Field<string>("Error_Desc_Column_Name").ToString()).First();
        

        或者也许这会起作用,但未经测试

         String errorDesc = resultCodesDT.Where(X=> x.Error_Code_Column_Name==errorCode)
        .Select(s=>s.Error_Desc_Column_Name.toString()).First();
        

        【讨论】:

          猜你喜欢
          • 2011-04-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多