我正在尝试使用CSV中的列填充ASP下拉列表。我能够使用下面的代码来完成它,但是,它显示重复,因为另一个列的值都是唯一的(因此使用.distinct()是不好的)。以下是我的CSV条目示例:
的env,应用程序,srvrole,服务器
开发,APPNAME1,网络,SERVER01
生产,APPNAME1,高速缓存,Server02上
服务器列始终是唯一的。
这是我的代码:
var collection_of_objects =
(from line in File.ReadAllLines("\\server\\shares\\App\\Farms.csv").Skip(1)
let parts = line.Split(',')
select new
{
env = parts[0],
app = parts[1],
srvrole = parts[2],
servers = parts[3],
}
).ToList();
dropdown_app.DataSource = collection_of_objects.Distinct();
dropdown_app.DataTextField = "app";
dropdown_app.DataBind();
srvrole.DataSource = collection_of_objects.Distinct();
srvrole.DataTextField = "srvrole";
srvrole.DataBind();
我还尝试使用Streamreader并输出到Datatable,但是,我无法将Datatable分配给下拉列表的数据源。 TYIA
答案 0 :(得分:0)
我能够使用streamreader解决它。如果有更简单的方法可以做到这一点,我全都听见了!
protected void Page_Load(object sender, EventArgs e)
{
List<string> environment = new List<String>();
List<string> application = new List<String>();
List<string> serverrole = new List<String>();
List<string> servers = new List<String>();
ReadCSV(environment, application, serverrole, servers);
string[] envlist = environment.ToArray();
string[] applist = application.ToArray();
string[] srvrolelist = serverrole.ToArray();
string[] serverlist = servers.ToArray();
dropdown_app.DataSource = applist.Skip(1).Distinct();
dropdown_app.DataBind();
srvrole.DataSource = srvrolelist.Skip(1).Distinct();
srvrole.DataBind();
}
public static void ReadCSV(List<string> environment, List<string> application, List<string> serverrole, List<string> servers)
{
StreamReader reader = new StreamReader(File.OpenRead(@"\\server\shares\App\Reference\Farms.csv"));
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
if (!String.IsNullOrWhiteSpace(line))
{
string[] values = line.Split(',');
if (values.Length >= 4)
{
environment.Add(values[0]);
application.Add(values[1]);
serverrole.Add(values[2]);
servers.Add(values[3]);
}
}
}
}
&#13;