使用C#使用ID删除数组中的重复行

时间:2016-11-24 10:13:06

标签: c#

我必须使用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;
        }
    }

1 个答案:

答案 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。