2013-02-23 62 views
0

我有一個類,它返回一個數組列表,但是當我讀它時,我想寫一個頁面中的值。閱讀ArrayList索引

我這個類:

 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>")); 
    ... 
} 

我怎麼能讀取索引值,或另一種方式,爲了不重複值。 如果還有其他解決方案,請告訴我。

+0

也許如果我能讀3排列3我可以不重複讀取。 – Severiano 2013-02-23 18:06:24

回答

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>")); 
} 
+0

list.Add(new string {item [「id」]。ToString(),item [「mail」] .ToString(),item [「data」]。ToString()});這有一個錯誤:字符串不包含定義添加 – Severiano 2013-02-23 18:20:35

+0

@DiogoSeveriano Huh?你確定? – AbZy 2013-02-23 18:24:04

+0

是的!你知道這是什麼意思嗎? – Severiano 2013-02-23 18:25:59

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" 
+0

此解決方案不起作用。 – Severiano 2013-02-23 18:03:33

+0

我已更新我的答案... – andri 2013-02-23 18:09:27

+0

仍然無法正常工作 – Severiano 2013-02-23 18:14:06

-1

您可以使用此代碼,如果你想報iminate重複。

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>")); 
     ... 
    } 
+0

不起作用,因爲它具有相同的索引 – Severiano 2013-02-23 18:03:11