相当于下面的sql的linq是什么?

时间:2019-02-06 01:27:53

标签: c# linq

如何将此sql查询转换为linq等效?我已经包括了我的模型。我首先从数据库中使用EF代码。我是c#编程的新手,所以我可能不知道要在问题中包括什么。谢谢

SELECT        RestaurantFranchiseeEmail.Email
FROM            RestaurantVersions INNER JOIN
                     RestaurantFranchiseeEmail ON 
RestaurantVersions.RestaurantId = RestaurantFranchiseeEmail.RestaurantId
WHERE        (RestaurantVersions.VersionId = N'M1')
GROUP BY RestaurantFranchiseeEmail.Email, RestaurantVersions.VersionId

模型

 namespace 
    {
        using System.ComponentModel.DataAnnotations;

        public class RestaurantVersion
    {
        public int Id { get; set; }

        [StringLength(50)]
        public string RestaurantId { get; set; }

        [StringLength(150)]
        public string Franchisee { get; set; }

        [StringLength(150)]
        public string VersionId { get; set; }
    }
}

   namespace 
    {
        using System.ComponentModel.DataAnnotations;
        using System.ComponentModel.DataAnnotations.Schema;

    [Table("RestaurantFranchiseeEmail")]
    public class RestaurantFranchiseeEmail
    {
        public int Id { get; set; }

        [StringLength(50)]
        public string RestaurantId { get; set; }

        [StringLength(150)]
        public string Franchisee { get; set; }

        [StringLength(150)]
        public string Email { get; set; }
    }
}

3 个答案:

答案 0 :(得分:0)

尝试以下代码:

Lazy.Value

答案 1 :(得分:0)

由于该问题没有太多细节,我将使用ViewModels将答案基于Entity Framework:

var result = _context.RestaurantVersions
    .Where(restaurantVersion => restaurantVersion.VersionId == "M1")
    .Select(restaurantVersion => new RestaurantVersionViewModel
    {
        VersionId = restaurantVersion.VersionId,
        RestaurantFranchiseeEmailViewModel = new RestaurantFranchiseeEmailViewModel
        {
            Email = restaurantVersion.RestaurantFranchiseeEmail.Email
        }
    })
    .GroupBy(restaurantVersionViewModel => new
        { 
            restaurantVersionViewModel.VersionId, 
            restaurantVersionViewModel.RestaurantFranchiseeEmailViewModel.Email 
        })
    .ToList()

这是未经测试的,并且假设很多。黑暗中纯净的刺杀。

编辑:您必须从分组中提取电子邮件。

答案 2 :(得分:0)

 var  query = from s in RestaurantVersions 
              join q in RestaurantFranchiseeEmail 
              on s.RestaurantId = 
                 q.RestaurantId
              where s.VersionId = N'M1'
              group q by q.Email
              select  q.Email;

我希望这些信息对您有所帮助 或者您可以检查此链接 enter link description here