使用LINQ?</string>在已知对象中填充List <string>

时间:2013-03-26 17:56:51

标签: c# linq

我对Linq很新,但只是想问一下如何使用LINQ填充List<String>对象?

我想要做的是带来特定用户的所有网址。此数据存储在Azure表

我的代码是:

public IEnumerable<UserTable> getUserImages(UserTable pUser) {
    var results = from u in this.context.usersTableQuery
                  where u.UserName == pUser.UserName
                  select u.PhotosUrl //PHOTOS URL IS A LIST of strings and I know im missing something here
    return results;
}

2 个答案:

答案 0 :(得分:3)

试试这个

   List<String>  results =( from u in this.context.usersTableQuery
                                  where u.UserName == pUser.UserName
                                  select u.PhotosUrl).ToList () 

答案 1 :(得分:2)

看起来您的查询总是返回一个用户,并且您想要他的PhotosUrl列表。如果这是真的你应该使用它:

var user = this.context.usersTableQuery.FirstOrDefault(u => u.UserName == pUser.UserName);

List<string> results;
if(user == null)
    results = new List<string>();
else
    results = user.PhotosUrl;

如果查询有可能返回具有给定UserName的多个用户,则必须使用SelectMany扩展方法:

List<string> results = this.context.usersTableQuery
                                   .Where(u => u.UserName == pUser.UserName)
                                   .SelectMany(u => u.PhotosUrl)
                                   .ToList();

SelectMany在基于语法的查询中没有关联的关键字。它会将您的结果从List<List<string>>展平为List<string>