当只需要唯一的行时,如何应用group by而不是distinct?

问题描述 投票:0回答:1

我正在开发 ap.net razor 页面 LINQ to SQL 函数。我遇到无法显示的问题

viewmodel AssetLPOvm

返回的结果不同的行

想要的结果

如果我有 2 或 3 行作为样本,则所有内容都是相同且重复的,因此我只需要返回唯一或不同的一行,因为其他行是重复的。

所以我需要使用group by而不是distinct返回不同的结果

我尝试使用如下所示的不同,但它不返回不同的行

那么我如何解决问题

 public List<AssetLPOvm> GetAllLpoDetails(string SelectedCompany)
    {
    


        var AssetBranches = _unitOFWorkAsset.AssetBranches.GetList(x => x.CompanyNo == SelectedCompany && Convert.ToInt32(x.UserID) > 0 );
        

        var NewAssetTagging = _unitOFWorkAsset.NewAssetTagging.GetList(x => x.LPONo > 0);
var result = (from assetBranch in AssetBranches
               join user in Users on assetBranch.UserID equals user.UserID
               join assetTagging in NewAssetTagging on Convert.ToDecimal(assetBranch.LPONO) equals assetTagging.LPONo
     
               select new AssetLPOvm
               {
                   AssetItemNo= assetBranch.AssetItemNo,
                   SupplierName=assetTagging.SupplierName,
                   SelectedMCUName= assetBranch.SelectedMCUName,
                   AssetOwner=assetBranch.AssetOwner,
                   ItemCode=assetBranch.ItemCode,
           
           
                   Qty = assetBranch.Qty,
                   LPONO = assetBranch.LPONO
                                }).Distinct().ToList();
 return result;
}

    public class AssetLPOvm
    {
     

        public string LPONO { get; set; }

        public string AssetItemNo { get; set; }

        public string SupplierName { get; set; }

        public string SelectedMCUName { get; set; }

        public string AssetOwner { get; set; }

        public double Qty { get; set; }

        public string ItemCode { get; set; }


    }
  public class AssetBranches
    {
      [Key]
      [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
      public decimal ID {get;set;}
      public string AssetItemNo { get; set; }
      public string SelectedMCUName { get; set; }
      public string AssetOwner { get; set; }
      public double Qty { get; set; }
      public string LPONO { get; set; }
      public string ItemCode { get; set; }

       }
    public class NewAssetTagging
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public decimal ID { get; set; }
        public decimal? LPONo { get; set; }
        public decimal? SupplierNumber { get; set; }

    }
public class User
{
    public string vLoginName {get;set;}
    public string UserName {get;set;}
}

如何对函数结果进行分组而不是使用 Distinct 函数?

我尝试使用 Distinct 但不返回不同的行。

sql-server asp.net-mvc linq-to-sql linq-to-entities razor-pages
1个回答
0
投票

我认为你可以使用 GroupBy 如下。 .GroupBy(x=>x.ItemCode).Select(x=>x.First()).ToList()

© www.soinside.com 2019 - 2024. All rights reserved.