2010-08-20 52 views
0

我想一个datarow[]转换成List<int>将数据行[]转换为列表<int>的最佳方式是什么?

List<int> UserIds; 

    public void GetGravatars() 
    { 
     var cmd = access.GetSqlCommandStoredProcedure("uspMembershipGetUserGravatarList"); 
     var table = access.ExecuteDataTable(cmd, DAL.Logic.Common.ConnectionStrings.User); 

     int[] rows = new int[table.Rows.Count]; 
     table.Rows.CopyTo(rows, 0); 
     UserIds = rows.ToList<int>(); 

    } 

    public bool UserHasGravatar(int userId) 
    { 
     UserIds.Find(
      delegate(int i) 
      { 
       return i == userId; 
      } 
     ); 
     return false; 
    } 

什么是这样做的最佳方式?

编辑:我的代码需要遍历用户列表,大约40000,并更新他们的图像,如果他们没有一个,所以我认为这将是最快的,加载所有用户图像到列表,然后检查数据库中的所有用户标识,如果用户标识不存在,则更新图像,否则继续。

+0

你能提供更多关于你想达到的信息吗? – ChrisF 2010-08-20 11:08:27

+0

你想要一个整数列表或者一系列提示吗?问题标题和示例代码似乎不同意你想要什么。 – 2010-08-20 11:12:34

回答

8
rows.Select(r=>/*However you get a single int from a single row*/).ToList(); 

更新:

我假设你正在使用的.NET Framework 3.5?但我可能是错的...

+0

他需要一个int [] - 数组。所以它的ToArray();-) – 2010-08-20 11:13:44

+0

我错了,还是应该用ToArray()替换ToList()? – davehauser 2010-08-20 11:13:55

+0

哦,他的UserIds类型显示列表,看起来像规范是矛盾':) 是的,你可以简单地使用其他扩展方法,ToArray() – flq 2010-08-20 11:14:43

相关问题