C# 返回Web API中不同的行
我们目前正在查询Oracle数据库,并以JSON格式返回结果。查询结果将返回更多重复的行。控制器如下所示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
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();