【问题标题】:Select first record of a column using LINQ ASP.NET使用 LINQ ASP.NET 选择列的第一条记录
【发布时间】:2014-07-10 05:53:08
【问题描述】:

我有一张表,其中包含 IdSmidAdditionalComment 等字段。我有多个相同Smid 的行,但AdditionalComment 数据仅出现在第一行。请在下面找到表结构

Id     |      Smid       |    AdditionalComment
-------+-----------------+-----------------------
 1     |        2        |       price 4.50 
 2     |        2        |
 3     |        2        |
 4     |        4        |       price 5.00
 5     |        4        |

等等。

在下面找到我的代码

代码

objlist.SMInfoId = smid.ToInt();
var comment = objlists.GroupBy(x => x.AdditionalComments).Select(g => g.First());
if (comment != null)
{
  al.Add(comment);
}

Session["arrayList"] = al;

提前谢谢你。

【问题讨论】:

  • 请问,您想从表中得到什么结果?
  • 嗨丹尼尔,我只想获得给定 Smid 的附加评论。例如,如果我给 Smid =2 ,它应该显示“价格 4.50”。希望你能理解。谢谢
  • 大家好,我尝试了下面给出的所有代码,但它们都不适合我,返回空值。
  • 嗨 - 我很确定,当smid 为 2 时,我的以下两个建议都会将值 'price 4.50' 放入变量 comment。这是你需要的吗?
  • @Merenzo,我都试过了,可惜没成功

标签: c# asp.net sql linq


【解决方案1】:

听起来您想查找指定Smid 的评论:因此您可以使用Smid ==(您的号码)并输入AdditionalComment 来查询对象。

所以,大概是这样的:

var obj = objlists.FirstOrDefault(x => x.Smid == smid && x.AdditionalComment != null);
var comment = (obj != null) ? obj.AdditionalComment : null;

或者,如果您特别需要找到与Smid 匹配且具有最低Id 的行:

var obj = objlists
    .Where(x => x.Smid == smid)
    .OrderBy(x => x.Id)
    .FirstOrDefault();
var comment = (obj != null) ? obj.AdditionalComment : null;

【讨论】:

  • @user3824021,当您尝试这两种情况时,变量obj 是否会填充对象?你的变量smid的类型/值是什么?
【解决方案2】:

试试下面的代码:

var result1 = dt.tbluserinfos.GroupBy(u => u.nm).First();

【讨论】:

    【解决方案3】:

    试试这个:(但 AdditionalComment 数据只出现在第一行

      var obj = objlists.Where(x=>x.AdditionalComment!="");
    

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      相关资源
      最近更新 更多