动态列表值

时间:2010-11-27 08:23:02

标签: c# asp.net

Dictionary<string, EmployeeInfo> employeeInfoList = new Dictionary<string, EmployeeInfo>();

employeeInfoList = EmployeeInfoProxy.GetAllEmployeeInfo(TenantId);

if (employeeInfoList != null)
{
    List<EmployeeInfo> employee = new List<EmployeeInfo>(employeeInfoList.Values);

    ViewData["Name"] = employee[0].Name; 
    ViewData["Salary"] = employee[0].Salary;
    ViewData["Department"] = employee[0].Department;
    ViewData["Designation"] = employee[0].Designation;
    ViewData["Address"] = employee[0].Address;
    ViewData["Address1"] = employee[0].Address1;
}

上面的代码工作正常。如果员工只有一条记录,那么我已经硬编码employee[0]

如果有更多行,如何将这些索引传递给员工(例如员工[\ i我应该在这里动态获取值]。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,给定一个List你可以使用linq来抓住一个雇员。

EmployeeInfo singleEmployee = employee.Where( x => x.Id).SingleOrDefault();
if (singleEmployee != null)
{
   do something here
}

说,我不知道你是否有像'Id或类似的人那样对员工有“钥匙”。

为了获得索引,您有一个更大的往返(将员工输出到网格或类似的东西,允许点击通过您想要的员工的索引,并以这种方式访问​​单个eployee)。

除非你在'EmployeeInfoProxy.GetAllEmployeeInfo()'方法中大量使用缓存,否则我会说你想要一个'GetEmployeeInfoById()',我会再次回到你的EmployeeInfo的需要一些描述的独特ID - 您将使您的生活变得更加轻松。

希望这会有所帮助。 干杯, 特里

[另外] 如果employeeListInfo有3个条目,那么为了访问它们中的每一个我会说最好的方法是创建一个viewmodel(看起来这是MVC),但是你可以做的最坏情况:

List<EmployeeInfo> employee = new List<EmployeeInfo>(employeeInfoList.Values);

ViewData["Employees"] = employee;

然后在你看来,只需:

<% foreach(EmployeeInfo employeeDetails in ViewData["Employees"] as List<EmployeeInfo>) { %>
   <!-- you will be looping through each employee here, so you can do as you wish
<% } %>

我不会说这是最佳做法 - 使用ViewModel可能代表了一种更好的方法,但上述内容肯定会为您提供适用于您的解决方案。