不确定linq到sql查询的返回类型

时间:2014-09-21 16:31:36

标签: c# sql asp.net linq

我有一个方法:

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

我知道我可能不得不返回List of of something?

另外,我可能错误地编写了查询。我正在尝试在user.UserID ==传递guid参数的用户集上加入一个配置文件表。

提前致谢。

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:3)

这是一种匿名类型 因为它没有名字,所以你不能退货。

相反,您应该使用这些属性创建自己的类,然后返回它。

答案 2 :(得分:2)

您可以将返回类型设置为动态