2013-02-23 64 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