【问题标题】:How to get distinct column value according to a certain column value from datatable?如何根据数据表中的某个列值获取不同的列值?
【发布时间】:2013-03-28 19:59:30
【问题描述】:

这是我的数据表:

===============================================================    
Question || Qid || Aid || answer_id || subject_id || marks
===============================================================
Q1       || 1   || 1   ||    1      ||     1      || 1   
Q1       || 1   || 2   ||    1      ||     1      || 1
Q1       || 1   || 3   ||    1      ||     1      || 1
Q1       || 1   || 4   ||    1      ||     1      || 1
Q2       || 2   || 5   ||    3      ||     1      || 2   
Q2       || 2   || 6   ||    3      ||     1      || 2
Q2       || 2   || 7   ||    3      ||     1      || 2
Q2       || 2   || 8   ||    3      ||     1      || 2

我想为每个问题获得不同的分数,例如问题 1 的分数是 1,问题 2 的分数是 2,但是如果我使用如下不同的关键字,我只会得到 1 或 2 一次

var total = (from r in dt.AsEnumerable()
             where r.Field<Int64>("subject_id") == 1
             select r.Field<Int64>("marks")).ToList().Distinct();

如果我不使用 distinct 我会在 1 个问题中获得 4 次标记字段。

我对 linq 不太了解,需要帮助。这个怎么做?

【问题讨论】:

  • 你能展示你最终想要的结果吗?描述不清楚。
  • 假设我有 10 个问题,5 个包含 1 分,另外 5 个包含 2 分,那么我想要 5 次 1 和 5 次 2。但是如果我使用上面的 distinct 我只得到 1 次 1 和1 次 2.

标签: c# winforms linq datatable


【解决方案1】:

你可以这样做:

    var total = (from r in dt.AsEnumerable()
                 where r.Field<Int64>("subject_id") == 1
                 select new { Question = r.Field<string>("Question"), Marks = r.Field<Int64>("marks") }).ToList().Distinct();
    string strC = "";
    foreach (var item in total)
    {
        strC = strC + "<br/>" + "Question: " + item.Question + " Marks: " + item.Marks;

    }
    Response.Write(strC);

这将为您提供如下输出:

Question: Q1 Marks: 1
Question: Q2 Marks: 2

【讨论】:

    【解决方案2】:

    我终于在前辈的帮助下做到了

    var total = (from r in dt.AsEnumerable()
                 where r.Field<Int64>("subject_id") == 1
                 select new { marks = r.Field<Int64>("marks"), QID = r.Field<Int64>("QID") }).ToList().Distinct(); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多