如何根据IList中的列名获取列的索引
本文关键字:获取 索引 何根 IList | 更新日期: 2023-09-27 18:00:47
如果这是一个简单的问题,我很抱歉,但我是编码新手。几天来,我一直断断续续地为这个问题头疼,并在互联网上搜索了无数次,但我总是两手空空。
我已经将数据库视图中的数据捕获到IList中。由于数据来自视图,并且如果需要进行更改(添加列等),可能(潜在地)会更改列的显示顺序,因此我希望通过列名以编程方式从IList中提取列的索引。
这对gridview来说很容易,因为它有一个很好的"HeaderRow"属性,可以让我写一些代码来遍历任何一行,并提取HeaderRow名称,将其与我要查找的名称进行比较,然后在找到它时提取一个递增的计数!,然后我就有了索引。
问题是,我试图避免为了操作它而不得不从已经从实体框架复制到另一个容器(gridview)的列表中复制数据。涉及gridview似乎变得不必要地复杂。
因此,如果有人能告诉我IList类是否有一个有用的属性可以用来通过列名获取列索引#,请告诉我,非常感谢!
编辑:
针对nvoigt的评论"IList对列一无所知。"
我相信它一定有一些想法,因为当我遍历代码并查看IList中的第一行数据时,它有列名("AppAnswer"等)。我想要的只是通过某种方式来查看它们,并确定(通过属性或代码)列名所在的索引
我不得不把它链接到这里,因为我的代表级别不够高,无法发布照片:https://www.dropbox.com/s/2xg3nduhqnzbl8n/ILisst.JPG
此外,这是从视图中捕获数据并将其放入列表的代码:
IList<View_AppQnA_All> list1 = useful.GetQuestionAnswerListForJobPosition(1);
public IList<View_AppQnA_All> GetQuestionAnswerListForJobPosition(int jobID)
{
IList<View_AppQnA_All> QuestionAnswerList = new List<View_AppQnA_All>();
IQueryable<View_AppQnA_All> view = Repository.Current.ObjectContext.
View_AppQnA_All.Where(Q => Q.AppQuestionForJobPosition == jobID);
QuestionAnswerList = view.ToList<View_AppQnA_All>();
return QuestionAnswerList;
}
#region Imports
using System;
using System.Drawing;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataAccess;
#endregion
namespace AOJobApplication
{
class Repository
{
#region Declarations
private static Repository m_instance;
private static AOApplicationContext CWEntities;
// Lock synchronization object
//private static object syncLock = new object();
private static readonly object syncLock = new object();
#endregion
#region Properties
/// <summary>
/// Returns the one and only Repository
/// </summary>
public static Repository Current
{
get
{
if (m_instance == null)
{
lock (syncLock)
{
if (m_instance == null)
{
m_instance = new Repository();
}
}
}
return m_instance;
}
}
#endregion
/// <summary>
/// Object context to get entity objects application void
/// </summary>
public AOApplicationContext ObjectContext
{
get
{
if (CWEntities != null)
{
return CWEntities;
}
else
{
CWEntities = new AOApplicationContext();
return CWEntities;
}
}
}
}
}
您存储在列表中的对象具有以视图为模型的属性。类中的属性没有任何顺序。它们只是财产,它们彼此相邻。您可以按照自己喜欢的任何方式对它们进行排序,Visual Studio调试器似乎是按名称对它们进行排列的。
这些类是生成的,而不是动态构建的。如果你的视图发生了巨大的变化(我想不仅仅是字段顺序),你将不得不再次生成它们。这意味着重新编译。