2013-03-26 34 views
0

我對Linq相當陌生,但只想問如何使用LINQ填充對象的List<String>用LINQ填充已知對象內的列表<string>?

即時通訊工具試圖做的是帶來來自特定用戶的所有網址。該數據被存儲在Azure Table中

我的代碼是:

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

您是否試圖將'pUser'中傳遞的列表保存或者只返回該用戶的字符串列表? – 2013-03-26 18:21:09

+0

我試圖將傳遞的列表保存到pUser – 2013-03-26 18:24:26

回答

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; 

如果該查詢返回多個用戶與給定用戶名的任何機會,你必須使用SelectMany擴展方法:

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

SelectMany還沒有在基於語法的查詢中獲得了關聯關鍵字。它會把你的結果從List<List<string>>變成List<string>

+0

是的!謝謝! – 2013-03-26 19:12:37

3

試試這個

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

該查詢的返回值不同於預期的列表,它實際上嵌套在System.Collections.Gneric.List ..我試過做.ToList ()結束,但它不會工作.. – 2013-03-26 18:29:19

+0

什麼是PhotosUrl類型? – sino 2013-03-26 18:56:12

+0

其類型爲列表 photosUrl; – 2013-03-26 18:58:38