2014-09-21 56 views
2

的返回類型我有一個方法:不確定的LINQ to SQL的查詢

public static ???? GetUserProfile(Guid guid) { 

      var UserProfileContext = new DataContext.UserProfileDataContext(); 
      var UserProfile = (from p in UserProfileContext.aspnet_Profiles 
           join u in (from u in UserProfileContext.aspnet_Users 
             where u.UserId == guid select u) 
           on p.UserId equals u.UserId 
           select new 
           { 
            u.UserId, 
            u.DisplayName, 
            u.AvatarPath, 
            u.LastActivityDate, 
            u.Votes, 
            u.Cures, 
            u.LinkTitle, 
            u.LinkURL, 
            p.AboutMe 
           }).ToList(); 
      return UserProfile; 
     } 

我知道,我可能要返回的東西,但什麼表?

此外,我可能寫錯了查詢。我正試圖加入user.UserID ==傳遞guid參數的用戶組中的一個配置文件表。

在此先感謝。

+1

這是一個匿名類型。你不能退還。 – SLaks 2014-09-21 16:33:53

+0

那麼有沒有解決方案? – bob 2014-09-21 16:35:13

回答

4

您已經創建了一個匿名類型的對象,你可以返回它作爲一個對象或動態類型。但另一種方式,可以創建一個新的類與所需的字段,並返回類型,如:

public class MyModel 
{ 
    int UserId{ get; set; } 
    string DisplayName { get; set; } 
    string AvatarPath { get; set; } 
    DateTime LastActivityDate { get; set; } 
    int Votes { get; set; } 
    int Cures { get; set; } 
    string LinkTitle { get; set; } 
    string LinkURL { get; set; } 
    string AboutMe { get; set; } 
} 
... 
public static List<MyModel> GetUserProfile(Guid guid) 
{ 
    var UserProfileContext = new DataContext.UserProfileDataContext(); 
    var UserProfile = (from p in UserProfileContext.aspnet_Profiles 
          join u in (from u in UserProfileContext.aspnet_Users 
           where u.UserId == guid select u) 
          on p.UserId equals u.UserId 
          select new MyModel 
          { 
           UserId = u.UserId, 
           DisplayName = u.DisplayName, 
           AvatarPath = u.AvatarPath, 
           LastActivity = u.LastActivityDate, 
           Votes = u.Votes, 
           Cures = u.Cures, 
           LinkTitle = u.LinkTitle, 
           LinkURL = u.LinkURL, 
           AboutMe = p.AboutMe 
          }).ToList(); 
    return UserProfile; 
} 

綜上所述你的選擇是:List<MyModel>List<object>List<dynamic>

3

這是一個匿名類型。
因爲它沒有名字,所以不能退貨。

相反,您應該使用這些屬性創建自己的類,然後返回該類。

2

您可以返回類型設置爲動態

+0

在強類型語言中,這既不是一種好的編程風格,也不是必需的。在這種情況下創建一個非匿名類總是更好。 – TGlatzer 2014-09-21 19:36:10

+0

它仍然是一個有效的選項。我可以重複其他答案,但那會很枯燥。 – krisdyson 2014-09-21 20:12:04