簡體   English   中英

C#使用linq枚舉定義局部變量

[英]C# Define local variable with an linq enumeration

我需要在C#枚舉中定義一個局部變量,因為我有一個額外的枚舉,該枚舉多次被稱為創建效率低下。 當前代碼如下:

List<object> listData = new List<object>();
List<EmployeeAdvanced> workDataList = GetEmployeeWorkAdvancedData();
List<EmployeeBasic> employeeList = GetEmployeeBasicData();

listData .AddRange(
          from employee in employeeList
          where employee.SomeNumber  > 0
             select new{
             ID = employee.ID,
             SSN = employee.SSN
             StreetAddress = workDataList.FirstOrDefault(x=> x.ID==employee.EmployeeID).Address,
             Zipcode = workDataList.FirstOrDefault(x=> x.ID==employee.EmployeeID).Zipcode}
);

實際上,我有許多workDataList列表的枚舉,但是每次都在同一項上選擇(EmployeeID)。 有什么方法可以只選擇我的單個workDataList對象一次,然后將其用於select循環中每個個體內的所有分配。

上面的代碼是簡化的版本,因此僅為了描述清楚而創建了名稱和數據結構。

讓我知道是否可以提供其他信息。

謝謝!

我認為您正在尋找let

List<object> listData = new List<object>();
List<EmployeeAdvanced> workDataList = GetEmployeeWorkAdvancedData();
List<EmployeeBasic> employeeList = GetEmployeeBasicData();

listData .AddRange(
          from employee in employeeList
          where employee.SomeNumber  > 0
          let workData = workDataList.FirstOrDefault(x=> x.ID==employee.EmployeeID)
             select new{
             ID = employee.ID,
             SSN = employee.SSN
             StreetAddress = workData.Address,
             Zipcode = workData.Zipcode}
);
listData.AddRange(from employee in employeeList
                  where employee.SomeNumber  > 0
                      let employeeTmp = workDataList.FirstOrDefault(x => x.ID == employee.EmployeeID)
                      select new {
                                    ID = employee.ID,
                                    SSN = employee.SSN
                                    StreetAddress = employeeTmp.Address,
                                    Zipcode = employeeTmp.Zipcode 
                                 }
);

您應該使用let關鍵字。 是用法的完整說明。

暫無
暫無

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

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