0

配列リストを返すクラスがありますが、それを読んでいるときに値をページに書きたいと思います。

私はこのクラスを持っています:

        public ArrayList users(string table)
        {
            ArrayList list = new ArrayList();
            foreach (DataRow item in com.Execute("select * from " + table + ";").Rows)
            {
                list.Add(item["id"].ToString());
                list.Add(item["mail"].ToString());
                list.Add(item["data"].ToString());
            }

            return list;
        }

Page_Load

loadUsersNewsletter lun = new loadUsersNewsletter();
String[] myArr = (String[])lun.users("newsletter").ToArray(typeof(string));
foreach (Object o in myArr)
{
    load.Controls.Add(new LiteralControl("<tr><td>" + o + "</td><td>" + o + "</td></tr>"));
    ...
}

値を繰り返さないために、インデックスまたは別の方法で値を読み取るにはどうすればよいですか? これに対する別の解決策があれば教えてください。

4

3 に答える 3

1

users次のようにメソッドを変更する必要があります。

public List<string[]> users(string table)
    {
        List<string[]> list = new List<string[]>();
        foreach (DataRow item in com.Execute("select * from " + table + ";").Rows)
        {
            list.Add(new string[]{item["id"].ToString(), item["mail"].ToString(), 
                                                    item["data"].ToString()});
        }

        return list;
    }

と :

loadUsersNewsletter lun = new loadUsersNewsletter();
List<string[]> myArr = lun.users("newsletter");
foreach (string[] o in myArr)
 {
   load.Controls.Add(new LiteralControl("<tr><td>" + o[0] + "</td><td>" + o[1] 
                                        + "</td><td>" + o[2] + "</td></tr>"));
 }
于 2013-02-23T18:15:27.007 に答える
0

このようなものを使用してみてくださいDistinct

foreach (var o in myArr.Distinct())
{
    load.Controls.Add(new LiteralControl("<tr><td>" + o + "</td><td>" + o + "</td></tr>"));
    ...
}

または、データベースからデータをロードしている場合は、データベースサーバーで実行することを検討してください。つまり、これの代わりに:

"select * from table"

これを試して :

"select distinct * from table"
于 2013-02-23T17:53:59.160 に答える
-1

重複を排除したい場合は、このコードを使用できます。

String[] myArr = (String[])lun.users("newsletter").ToArray(typeof(string));
    List<string> Content=new List<string>();
    foreach (Object o in myArr)
    {
        if(Content.Contains(o.ToString()))
    continue;
    Content.Add(o.ToString());
        load.Controls.Add(new LiteralControl("<tr><td>" + o + "</td><td>" + o + "</td></tr>"));
        ...
    }
于 2013-02-23T17:55:27.613 に答える