[英]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
}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.