簡體   English   中英

具有Distinct和WHERE子句的LINQ查詢

[英]LINQ query with Distinct and WHERE clause

我的Distinct查詢工作正常,但是我需要在另一個方法中放入WHERE子句。

這是我檢索不同經理的工作查詢

public static IEnumerable<DTO.Employee> GetDistinctMgrs()
{
    IEnumerable<DTO.Employee> managers = EmpCache.EmployeeList.GroupBy(x => x.MgrID).Select(x => x.FirstOrDefault());
    return managers;
}

這是我試圖從何處從不同的經理列表中選拔員工經理的地方。 但是有了WHERE子句,我得到“枚舉沒有結果”

public static IEnumerable<DTO.Employee> GetDefaultMgr(string EMPID)
{
    IEnumerable<DTO.Employee> manager = EmpCache.EmployeeList
            .Where(s => s.EmpID == EMPID)
            .GroupBy(x => x.MgrID)
    .Select(x => x.FirstOrDefault());

     return manager; //<- "Enumeration yielded no results"
}

您正在做的是向數據庫發送請求,當請求完成時,您進行groupby等。

因此,當數據庫不返回任何內容時,您將獲得異常

這是我會怎么做

public static IEnumerable<DTO.Employee> GetDefaultMgr(string EMPID)
 {
  IEnumerable<DTO.Employee> manager = EmpCache.EmployeeList
            .Where(s => s.EmpID == EMPID)
             .GroupBy(x => x.MgrID);
           if(manager?.Count()>0)
            return manager.Select(x => x.First());

       return null;
    }

我會做

 public static IEnumerable<DTO.Employee> GetDefaultMgr(string EMPID)
 {
               IEnumerable<DTO.Employee> manager = 
               from mng in EmpCache.EmployeeList
                where mng.EmpID.ToLower() == EMPID.ToLower()
                orderby mng.MgrID
                select mng;
               return manager;
    }

要么

public static IEnumerable<DTO.Employee> GetDefaultMgr(string EMPID)
{
    IEnumerable<DTO.Employee> manager = EmpCache.EmployeeList
            .Where(s => s.EmpID.ToLower() == EMPID.ToLower())
            .GroupBy(x => x.MgrID)
    .Select(x => x.FirstOrDefault()).ToList();

     return manager; //<- "Enumeration yielded no results"
}

根據您的新問題

 public static  string GetDefaultMgr(string EMPID)
    {
       string managerID = EmpCache.EmployeeList
                .Where(s => s.EmpID.ToLower() == EMPID.ToLower())
                .GroupBy(x => x.MgrID)
        .Select(x => x.MgrID).FirstOrDefault().ToString();

         return managerID; //<- "Enumeration yielded no results"
    }

暫無
暫無

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

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