1

重複の可能性:
LINQ to SQL:匿名タイプを返しますか?

linq結合のList<>にはどのリターンタイプを使用しますか?以下の複数のテーブルを結合していますが、エラーが発生します'Cannot implicitly convert type System.Collections.Generic.List<AnonymousType#1> to System.Collections.Generic.List<CargoTanksDAL.aspnet_Users>

    public List<> GetAspnetUsersWithMembershipAndCompany()
    {

        using (DevCargoEntities db = new DevCargoEntities())
        {
            var users = from u in db.aspnet_Users
                        join mem in db.aspnet_Membership on u.UserId equals mem.UserId
                        join cl in db.CT_CompanyLogIn on u.UserName equals cl.UserLogIn
                        join companies in db.CT_Companies on cl.CompanyID equals companies.CompanyID
                        select new
                        {
                            u.UserId,
                            u.UserName,
                            mem.Email,
                            mem.IsLockedOut,
                            mem.IsApproved,
                            mem.CreateDate,
                            companies.CompanyName
                        };

            return users.ToList();
        }
    }
4

2 に答える 2

5

なし。ここでは結合は重要ではなく、選択は重要であり、匿名タイプを選択します。匿名タイプを返すことはできません。返したいプロパティを含む新しいクラスを作成し、そのタイプをインスタンス化することをお勧めします。

理論的にはダイナミックまたはオブジェクトを返すことができますが、それは本当に歩きたくないパスです。それを信じてください。

于 2013-01-22T18:32:08.403 に答える
2

私はこのユーザーのために新しいクラスを作ったでしょう。

public class SomeKindOfUser
{
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string Email { get; set; }
    public bool IsLockedOut { get; set; }
    public bool IsApproved { get; set; }
    public DateTime CreateDate { get; set; }
    public string CompanyName { get; set; }
}

今、あなたは使用することができます

public List<SomeKindOfUser> GetAspnetUsersWithMembershipAndCompany()

次に、選択で:

select new SomeKindOfUser
                        {
                            UserId = u.UserId,
                            UserName = u.UserName,
                            Email = mem.Email,
                            IsLockedOut = mem.IsLockedOut,
                            IsApproved = mem.IsApproved,
                            CreateDate = mem.CreateDate,
                            CompanyName = companies.CompanyName
                        };
于 2013-01-22T18:35:37.827 に答える