0

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

我想要做的是从特定用户那里获取所有 URL。此数据存储在 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;
}
4

2 回答 2

3

尝试这个

   List<String>  results =( from u in this.context.usersTableQuery
                                  where u.UserName == pUser.UserName
                                  select u.PhotosUrl).ToList () 
于 2013-03-26T17:58:56.103 回答
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>>into扁平化List<string>

于 2013-03-26T19:07:01.823 回答