我必须使用C#删除数组中的重复行。在数组中我有3列。
以下是我的代码
[WebMethod]
public static string GetYesterdayPatientsByTime()
{
try
{
BusinessLogicLayer bal = new BusinessLogicLayer();
DataSet ds = bal.GetYesterdayPatientsByTimeBAL();
string[] output = new string[(ds.Tables[0].Rows.Count * ds.Tables[0].Columns.Count)];
int count = 0;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
output[count++] = ds.Tables[0].Rows[i].ItemArray[j].ToString();
}
}
JavaScriptSerializer js = new JavaScriptSerializer();
js.MaxJsonLength = 2147483644;
return js.Serialize(output.Distinct().ToArray());
}
catch (Exception)
{
return "";
throw;
}
}
答案 0 :(得分:0)
您可以将Distinct()
方法扩展为DistinctBy()
,这样您就可以通过多个列进行区分 - 请检查链接:LINQ's Distinct() on a particular property
我想到的另一个解决方案是使用结果创建ArrayList。在遍历整个数组时,您将检查该元素是否存在于列表中,如果不存在,您将添加它。
检查MSDN后https://msdn.microsoft.com/cs-cz/library/bb348436(v=vs.110).aspx - 您可以使用Distinct()
默认找到Default IEquatable
,因此您还可以将自己的Comparer
添加到该类中,这将基于比较在ID。