C# cast IEnumerable<;T>;到字典<;国际贸易,T>;
我有一个返回类型为的方法:C# cast IEnumerable<;T>;到字典<;国际贸易,T>;,c#,C#,我有一个返回类型为的方法: IEnumerable<T> ID是唯一的,必须在我的字典中用作键,其他字段必须映射到LeaveTypeDto。您可以指定要从可枚举项中获取的键或键和值 如果我有这样一门课: public class MyClass { public int Id {get;set;} public string Name {get;set;} } 我可以写以下内容来获得一本词典: IEnumerable值; IDictionary valueDict
IEnumerable<T>
ID是唯一的,必须在我的字典中用作键,其他字段必须映射到LeaveTypeDto。您可以指定要从可枚举项中获取的键或键和值 如果我有这样一门课:
public class MyClass
{
public int Id {get;set;}
public string Name {get;set;}
}
我可以写以下内容来获得一本词典
:
IEnumerable值;
IDictionary valueDict=values.ToDictionary(t=>t.Id);
或通过以下方式获得词典
:
IEnumerable值;
IDictionary valueDict=values.ToDictionary(t=>t.Id,t=>t.Name);
那系统.Linq呢
GetList(string.Empty).ToDictionary(k => int.Parse(k.ID))
注意,如果ID
是string
,则前面的示例有效,如果它是int
,则更简单
GetList(string.Empty).ToDictionary(k => k.ID)
如果ID是
的一部分,则将类型保留为
var q = GetList(string.Empty).ToDictionary(b => b.ID);
否则,请使用select重载获取索引,然后使用ToDictionary()
我在LeaveType上定义了一个扩展方法:
public static DTO.LeaveTypeDto ToDto(this DataModel.Timekeeper.LeaveType leaveType)
{
return new DTO.LeaveTypeDto
{
ID = leaveType.ID,
Code = leaveType.Code,
Title = leaveType.Title,
DailyAvailable = leaveType.DailyAvailable,
HourlyAvailable = leaveType.HourlyAvailable,
ShiftBaseAvailable = leaveType.ShiftBaseAvailable,
PredefinedRemaining = leaveType.PredefinedRemaining,
Active = leaveType.Active,
StandardLeaveType = leaveType.StandardLeaveType,
NotRequestAutomaticaly = leaveType.NotRequestAutomaticaly,
TemplateFileID = leaveType.TemplateFileID,
ObligateChooseSubstituteForDailyLeave = leaveType.ObligateChooseSubstituteForDailyLeave,
ObligateChooseSubstituteForHourlyLeave = leaveType.ObligateChooseSubstituteForHourlyLeave,
ObligateChooseSubstituteForShiftBaseLeave = leaveType.ObligateChooseSubstituteForShiftBaseLeave,
ObligateChooseInsertAttachment = leaveType.ObligateChooseInsertAttachment,
CheckSubstituteLimit = leaveType.CheckSubstituteLimit,
AbsenceRespiteYearXferLimitDays = leaveType.AbsenceRespiteYearXferLimitDays,
AbsenceRespiteYearXferMode = leaveType.AbsenceRespiteYearXferMode,
AbsenceRespiteYearXferValuesSummarize = leaveType.AbsenceRespiteYearXferValuesSummarize,
DailyRequestRegisterRespite = leaveType.DailyRequestRegisterRespite,
DayMaxHourlyMinutes = leaveType.DayMaxHourlyMinutes,
DayWorkMinutes = leaveType.WorkingPeriodMaxHourlyMinutes,
DecreaseAllOnNXOverflow = leaveType.DecreaseAllOnNXOverflow,
DecreaseBasedOnMonthWorkingDays = leaveType.DecreaseBasedOnMonthWorkingDays,
DecreaseDayWorkMinutesOnExtraWorkDays = leaveType.DecreaseDayWorkMinutesOnExtraWorkDays,
DecreaseOnExtraWorkDays = leaveType.DecreaseOnExtraWorkDays,
DecreaseOnHolidays = leaveType.DecreaseOnHolidays,
HourlyInOFFDayAvailable=leaveType.HourlyInOFFDayAvailable,
YearXferValuesSummarize = leaveType.YearXferValuesSummarize,
YearXferPercentage=leaveType.YearXferPercentage,
MaxContinuousDaysLimit = leaveType.MaxContinuousDaysLimit,
HourlyRequestRegisterRespite = leaveType.HourlyRequestRegisterRespite,
YearXferMode = leaveType.YearXferMode,
MonthlyDaysLimit = leaveType.MonthlyDaysLimit,
MonthlyXMinsLimit = leaveType.MonthlyXMinsLimit,
YearXferLimitDays = leaveType.YearXferLimitDays,
YearLimitDays = leaveType.YearLimitDays,
MonthStorable = leaveType.MonthStorable,
YearHourlyMinsLimit = leaveType.YearHourlyMinsLimit,
MonthPreusable = leaveType.MonthPreusable,
MonthlyNXMinsLimit = leaveType.MonthlyNXMinsLimit,
MonthMaxHourlyMinutes = leaveType.MonthMaxHourlyMinutes,
IncreaseAbsenceRespiteRemaining = leaveType.IncreaseAbsenceRespiteRemaining,
DailyLeaveRequestCountPerMonthForOthers = leaveType.DailyLeaveRequestCountPerMonthForOthers,
DailyLeaveRequestDurationPerMonthForOthers = leaveType.DailyLeaveRequestDurationPerMonthForOthers,
ShiftLeaveRequestCountPerMonthForOthers = leaveType.ShiftLeaveRequestCountPerMonthForOthers,
ShiftLeaveRequestDurationPerMonthForOthers = leaveType.ShiftLeaveRequestDurationPerMonthForOthers,
HourlyLeaveRequestCountPerMonthForOthers = leaveType.HourlyLeaveRequestCountPerMonthForOthers,
UseLeaveRequetLimitForOthersPerMonth = leaveType.UseLeaveRequetLimitForOthersPerMonth,
DailyCountPerMonth = leaveType.DailyCountPerMonth,
CheckMeritRemainingInUnpayedRequest = leaveType.CheckMeritRemainingInUnpayedRequest,
DayMinHourlyMinutes = leaveType.DayMinHourlyMinutes,
FirstPresenceRangeHourlyCountPerMonth = leaveType.FirstPresenceRangeHourlyCountPerMonth,
FirstPresenceRangeLenght = leaveType.FirstPresenceRangeLenght,
FirstPresenceRangeMaxHourlyLimit = leaveType.FirstPresenceRangeMaxHourlyLimit,
FirstPresenceRangeMinHourlyLimit= leaveType.FirstPresenceRangeMinHourlyLimit,
HourlyCountPerMonth = leaveType.HourlyCountPerMonth,
HourlyLeaveRequestDurationPerMonthForOthers = leaveType.HourlyLeaveRequestDurationPerMonthForOthers,
IsMonthMaxHourlyStorableToCurrent = leaveType.IsMonthMaxHourlyStorableToCurrent,
LastPresenceRangeHourlyCountPerMonth = leaveType.LastPresenceRangeHourlyCountPerMonth,
LastPresenceRangeLenght = leaveType.LastPresenceRangeLenght,
LastPresenceRangeMaxHourlyLimit = leaveType.LastPresenceRangeMaxHourlyLimit,
LastPresenceRangeMinHourlyLimit = leaveType.LastPresenceRangeMinHourlyLimit,
MiddlePresenceRangeHourlyCountPerMonth = leaveType.MiddlePresenceRangeHourlyCountPerMonth,
MiddlePresenceRangeMaxHourlyLimit = leaveType.MiddlePresenceRangeMaxHourlyLimit,
MiddlePresenceRangeMinHourlyLimit = leaveType.MiddlePresenceRangeMinHourlyLimit,
MonthMaxDailyDays=leaveType.MonthMaxDailyDays,
MonthMaxHourlyStorable=leaveType.MonthMaxHourlyStorable,
ShiftBaseCountPerMonth=leaveType.ShiftBaseCountPerMonth,
SuspendsPersonnelStatus=leaveType.SuspendsPersonnelStatus,
WorkingPeriodMaxHourlyMinutes=leaveType.WorkingPeriodMaxHourlyMinutes,
YearXMonthMaxHourlyferLimitHours=leaveType.YearXMonthMaxHourlyferLimitHours,
YearXMonthMaxHourlyferMode=leaveType.YearXMonthMaxHourlyferMode
};
}
这样我的问题就解决了。:)
GetList(string.Empty).ToDictionary(k => int.Parse(k.ID))
GetList(string.Empty).ToDictionary(k => k.ID)
var q = GetList(string.Empty).ToDictionary(b => b.ID);
var q = GetList(string.Empty).Select((element, index) => new { i= index, e = element }).ToDictionary(b => b.i, b => b.e);
public static DTO.LeaveTypeDto ToDto(this DataModel.Timekeeper.LeaveType leaveType)
{
return new DTO.LeaveTypeDto
{
ID = leaveType.ID,
Code = leaveType.Code,
Title = leaveType.Title,
DailyAvailable = leaveType.DailyAvailable,
HourlyAvailable = leaveType.HourlyAvailable,
ShiftBaseAvailable = leaveType.ShiftBaseAvailable,
PredefinedRemaining = leaveType.PredefinedRemaining,
Active = leaveType.Active,
StandardLeaveType = leaveType.StandardLeaveType,
NotRequestAutomaticaly = leaveType.NotRequestAutomaticaly,
TemplateFileID = leaveType.TemplateFileID,
ObligateChooseSubstituteForDailyLeave = leaveType.ObligateChooseSubstituteForDailyLeave,
ObligateChooseSubstituteForHourlyLeave = leaveType.ObligateChooseSubstituteForHourlyLeave,
ObligateChooseSubstituteForShiftBaseLeave = leaveType.ObligateChooseSubstituteForShiftBaseLeave,
ObligateChooseInsertAttachment = leaveType.ObligateChooseInsertAttachment,
CheckSubstituteLimit = leaveType.CheckSubstituteLimit,
AbsenceRespiteYearXferLimitDays = leaveType.AbsenceRespiteYearXferLimitDays,
AbsenceRespiteYearXferMode = leaveType.AbsenceRespiteYearXferMode,
AbsenceRespiteYearXferValuesSummarize = leaveType.AbsenceRespiteYearXferValuesSummarize,
DailyRequestRegisterRespite = leaveType.DailyRequestRegisterRespite,
DayMaxHourlyMinutes = leaveType.DayMaxHourlyMinutes,
DayWorkMinutes = leaveType.WorkingPeriodMaxHourlyMinutes,
DecreaseAllOnNXOverflow = leaveType.DecreaseAllOnNXOverflow,
DecreaseBasedOnMonthWorkingDays = leaveType.DecreaseBasedOnMonthWorkingDays,
DecreaseDayWorkMinutesOnExtraWorkDays = leaveType.DecreaseDayWorkMinutesOnExtraWorkDays,
DecreaseOnExtraWorkDays = leaveType.DecreaseOnExtraWorkDays,
DecreaseOnHolidays = leaveType.DecreaseOnHolidays,
HourlyInOFFDayAvailable=leaveType.HourlyInOFFDayAvailable,
YearXferValuesSummarize = leaveType.YearXferValuesSummarize,
YearXferPercentage=leaveType.YearXferPercentage,
MaxContinuousDaysLimit = leaveType.MaxContinuousDaysLimit,
HourlyRequestRegisterRespite = leaveType.HourlyRequestRegisterRespite,
YearXferMode = leaveType.YearXferMode,
MonthlyDaysLimit = leaveType.MonthlyDaysLimit,
MonthlyXMinsLimit = leaveType.MonthlyXMinsLimit,
YearXferLimitDays = leaveType.YearXferLimitDays,
YearLimitDays = leaveType.YearLimitDays,
MonthStorable = leaveType.MonthStorable,
YearHourlyMinsLimit = leaveType.YearHourlyMinsLimit,
MonthPreusable = leaveType.MonthPreusable,
MonthlyNXMinsLimit = leaveType.MonthlyNXMinsLimit,
MonthMaxHourlyMinutes = leaveType.MonthMaxHourlyMinutes,
IncreaseAbsenceRespiteRemaining = leaveType.IncreaseAbsenceRespiteRemaining,
DailyLeaveRequestCountPerMonthForOthers = leaveType.DailyLeaveRequestCountPerMonthForOthers,
DailyLeaveRequestDurationPerMonthForOthers = leaveType.DailyLeaveRequestDurationPerMonthForOthers,
ShiftLeaveRequestCountPerMonthForOthers = leaveType.ShiftLeaveRequestCountPerMonthForOthers,
ShiftLeaveRequestDurationPerMonthForOthers = leaveType.ShiftLeaveRequestDurationPerMonthForOthers,
HourlyLeaveRequestCountPerMonthForOthers = leaveType.HourlyLeaveRequestCountPerMonthForOthers,
UseLeaveRequetLimitForOthersPerMonth = leaveType.UseLeaveRequetLimitForOthersPerMonth,
DailyCountPerMonth = leaveType.DailyCountPerMonth,
CheckMeritRemainingInUnpayedRequest = leaveType.CheckMeritRemainingInUnpayedRequest,
DayMinHourlyMinutes = leaveType.DayMinHourlyMinutes,
FirstPresenceRangeHourlyCountPerMonth = leaveType.FirstPresenceRangeHourlyCountPerMonth,
FirstPresenceRangeLenght = leaveType.FirstPresenceRangeLenght,
FirstPresenceRangeMaxHourlyLimit = leaveType.FirstPresenceRangeMaxHourlyLimit,
FirstPresenceRangeMinHourlyLimit= leaveType.FirstPresenceRangeMinHourlyLimit,
HourlyCountPerMonth = leaveType.HourlyCountPerMonth,
HourlyLeaveRequestDurationPerMonthForOthers = leaveType.HourlyLeaveRequestDurationPerMonthForOthers,
IsMonthMaxHourlyStorableToCurrent = leaveType.IsMonthMaxHourlyStorableToCurrent,
LastPresenceRangeHourlyCountPerMonth = leaveType.LastPresenceRangeHourlyCountPerMonth,
LastPresenceRangeLenght = leaveType.LastPresenceRangeLenght,
LastPresenceRangeMaxHourlyLimit = leaveType.LastPresenceRangeMaxHourlyLimit,
LastPresenceRangeMinHourlyLimit = leaveType.LastPresenceRangeMinHourlyLimit,
MiddlePresenceRangeHourlyCountPerMonth = leaveType.MiddlePresenceRangeHourlyCountPerMonth,
MiddlePresenceRangeMaxHourlyLimit = leaveType.MiddlePresenceRangeMaxHourlyLimit,
MiddlePresenceRangeMinHourlyLimit = leaveType.MiddlePresenceRangeMinHourlyLimit,
MonthMaxDailyDays=leaveType.MonthMaxDailyDays,
MonthMaxHourlyStorable=leaveType.MonthMaxHourlyStorable,
ShiftBaseCountPerMonth=leaveType.ShiftBaseCountPerMonth,
SuspendsPersonnelStatus=leaveType.SuspendsPersonnelStatus,
WorkingPeriodMaxHourlyMinutes=leaveType.WorkingPeriodMaxHourlyMinutes,
YearXMonthMaxHourlyferLimitHours=leaveType.YearXMonthMaxHourlyferLimitHours,
YearXMonthMaxHourlyferMode=leaveType.YearXMonthMaxHourlyferMode
};
}
GetList(string.Empty).ToDictionary(lt => lt.ID, lt => lt.ToDto())