【问题标题】:Linq query to find minimum price from a datatableLinq 查询从数据表中查找最低价格
【发布时间】:2014-05-21 14:33:33
【问题描述】:

我正在使用 vb.net 开发一个程序。这是一个控制台应用程序,我没有使用数据库。

我必须为用户输入的电话号码找到最便宜的价格。 数据表的结构是pricelist(id,code,operator,price)。我需要创建一个 Linq 查询,它可以让运营商为所需的电话号码提供最低价格。

【问题讨论】:

  • "pricelist(id,code,operator,code)" 对于您的问题没有多大意义。 价格在哪里?
  • 抱歉最后一个是价格而不是代码。我现在想要这样的东西 Dim result() As DataRow = table.Select("min(price) AND Code = " & code_passed_by_user)

标签: .net vb.net linq datatable console


【解决方案1】:

为了使用LINQ 扩展方法/查询,您需要一个IEnumerable。您可以通过调用AsEnumerable() 扩展方法从DataTable 获取一个。

然后你可以分解你的查询:

' Extract just the rows for the code entered by the user
Dim rowsForCode = dt.AsEnumerable().Where(Function(x) x("code") = userEnteredCode).ToList()
' Find the minimum price for these rows
Dim minPrice = rowsForCode.Min(Function(x) CDec(x("price")))
' Find the first row with the minimum price
Dim minRow = rowsForCode.Where(Function(x) x("price") = minPrice).First()

注意:如果您有多个运营商为相同的代码提供相同的价格,则将始终选择表中的第一个。您可以获取所有匹配的行(删除.First() 调用)并在有问题时随机选择一个。

【讨论】:

  • 我复制了这段代码。但是在第一行代码中,它在“dt”下给出了一条红线,并说生成一个螺柱,当我写“priclist”我的数据表的名称时,它说重载解析。 ://
  • @FaizanKarim 在你的项目中是否引用了System.Data.DataSetExtensionsUsing System.Data 以引入AsEnumerable 扩展方法?
  • 是的,我有它们的参考,我还导入了 system.data。我怎样才能把我的项目发给你,或者我应该在这里上传代码。它只是 4-5 种方法。
  • @FaizanKarim 您可以编辑问题以添加相关代码。
  • 我拼错了用户输入的变量名。你真是个天才。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多