簡體   English   中英

與下面的 sql 等效的 linq 是什么?

[英]What would be the linq equivalent to the below sql?

如何將此 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; }
    }
}

試試這個代碼:

from s in RestaurantVersions 
          join c in RestaurantFranchiseeEmail on s.RestaurantId equals c.RestaurantId
         where c.VersionId == "M1"
           group c by s.Email && c.VersionId
        select c.Email;

由於這個問題沒有太多細節,我將使用 ViewModels 將我的答案基於實體框架:

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()

這是未經測試的,並假設了很多。 純粹的暗中刺傷。

編輯:您必須從分組中提取電子郵件。

 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;

我希望這些信息對您有所幫助 或者您可以查看此鏈接在此處輸入鏈接描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM