Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回Web API中不同的行_C#_Sql_Asp.net_Asp.net Mvc_Oracle - Fatal编程技术网

C# 返回Web API中不同的行

C# 返回Web API中不同的行,c#,sql,asp.net,asp.net-mvc,oracle,C#,Sql,Asp.net,Asp.net Mvc,Oracle,我们目前正在查询Oracle数据库,并以JSON格式返回结果。查询结果将返回更多重复的行。控制器如下所示 public HttpResponseMessage Getdetails([FromUri] string[] Column) { List<string> selectionStrings = new List<string>(); string connStr = ConfigurationManager.ConnectionStri

我们目前正在查询Oracle数据库,并以JSON格式返回结果。查询结果将返回更多重复的行。控制器如下所示

public HttpResponseMessage Getdetails([FromUri] string[] Column)
    {
     List<string> selectionStrings = new List<string>();
     string connStr = ConfigurationManager.ConnectionStrings["PConnection"].ConnectionString;
     using (OracleConnection dbconn = new OracleConnection(connStr))
     {
      DataSet userDataset = new DataSet();
      var colDict = new Dictionary<string, string>()
      {
       {"CATEGORY", "STCD_PRIO_CATEGORY_DESCR.DESCR"},
       {"SESSION_NUMBER", "STCD_PRIO_CATEGORY_DESCR.SESSION_NUM"},
       {"SESSION_START_DATE","Trunc(STCD_PRIO_CATEGORY_DESCR.START_DATE)"},
       {"SESSION_START_TIME","STCD_PRIO_CATEGORY_DESCR.START_DATE"}}};
            foreach (string col in Column)
            {
                string selector = colDict[col];
                selectionStrings.Add(string.Format("{0} AS {1}", selector, col));
            }
            string selectString = string.Join(",", selectionStrings);

            var strQuery =   string.Format(@"SELECT {0}
                             FROM 
                             STCD_PRIO_CATEGORY_DESCR", selectString);
     }}}

这应该够了吗?或者我们应该将DISTINCT放在所有列名之前

使用DISTINCT,或者如果您仍然有问题,可以将数据结果移动到列表中,并使用linq仅选择唯一的行

var result = myList.GroupBy(test => test.id)
                   .Select(grp => grp.First())
                   .ToList();

摘自:

您尝试过这种不同的解决方案吗?结果是什么?yes DISTINCT仅在选择之后和指定之前使用一次columns@CodeNotFound当我使用Distinct时,没有区别。@Matt我尝试使用DISTICT,但返回的行数是相同的。如果您获得的记录数与Distinct相同,则表示您已经只获得了不同的记录。如果您期望的记录较少,您可能会包含一列,该列使记录变得唯一,而您并不真正需要或想要这些记录,并且导致记录的数量高于预期。我们可以不使用Linq并直接在查询中提供这些记录吗?这将加载比需要更多的数据,这不是一个理想的解决方案,但更像是一个解决方案。
var result = myList.GroupBy(test => test.id)
                   .Select(grp => grp.First())
                   .ToList();