C# 存储数据集(在表中)的最佳方式
我有一个客户端和一个服务器程序,我目前正在使用哈希表来存储客户端连接时的名称和IP地址。现在我需要添加另一个变量,客户端在连接时将发送给服务器,但据我所知,哈希表只有2列(Key和value)。有没有其他方法可以代替哈希表存储这些数据?您可以将对象粘贴到哈希表或字典中 所以,让自己成为一个具有某种描述的用户类,然后将用户对象以其名称存储在字典中 然后,当您需要添加其他属性时,这将有助于获取这些属性C# 存储数据集(在表中)的最佳方式,c#,client,hashtable,C#,Client,Hashtable,我有一个客户端和一个服务器程序,我目前正在使用哈希表来存储客户端连接时的名称和IP地址。现在我需要添加另一个变量,客户端在连接时将发送给服务器,但据我所知,哈希表只有2列(Key和value)。有没有其他方法可以代替哈希表存储这些数据?您可以将对象粘贴到哈希表或字典中 所以,让自己成为一个具有某种描述的用户类,然后将用户对象以其名称存储在字典中 然后,当您需要添加其他属性时,这将有助于获取这些属性 public class User { public string Name { get;
public class User
{
public string Name { get; set; }
public string IPAddress { get; set; }
public string AnotherProperty { get; set;}
}
Dictionary<string, User> userTable = new Dictionary<string, User>();
userTable.Add(userName, new User(){Name = "fred", IPAddress = "127.0.0.1", AnotherProperty = "blah"});
公共类用户
{
公共字符串名称{get;set;}
公共字符串IPAddress{get;set;}
公共字符串另一个属性{get;set;}
}
Dictionary userTable=newdictionary();
添加(userName,new User(){Name=“fred”,IPAddress=“127.0.0.1”,AnotherProperty=“blah”});
类似这样的东西您可以将对象粘贴到哈希表或字典中 所以,让自己成为一个具有某种描述的用户类,然后将用户对象以其名称存储在字典中 然后,当您需要添加其他属性时,这将有助于获取这些属性
public class User
{
public string Name { get; set; }
public string IPAddress { get; set; }
public string AnotherProperty { get; set;}
}
Dictionary<string, User> userTable = new Dictionary<string, User>();
userTable.Add(userName, new User(){Name = "fred", IPAddress = "127.0.0.1", AnotherProperty = "blah"});
公共类用户
{
公共字符串名称{get;set;}
公共字符串IPAddress{get;set;}
公共字符串另一个属性{get;set;}
}
Dictionary userTable=newdictionary();
添加(userName,new User(){Name=“fred”,IPAddress=“127.0.0.1”,AnotherProperty=“blah”});
类似这样的内容您可以创建一个新的
类
,专门用于存储这些信息,例如
public class Client
{
private string Name { get; set;}
private string IP { get; set;}
//... etc.
}
不使用哈希表,只需将客户机
类的实例存储到会话
对象中(或存储哈希表所用的任何对象)
如果需要存储多个客户端的详细信息,则使用
列表
,如果需要使用键查找项目,则使用字典。实验看看什么对你有用。你可以创建一个新的类
,专门用来收集这些信息,例如
public class Client
{
private string Name { get; set;}
private string IP { get; set;}
//... etc.
}
不使用哈希表,只需将客户机
类的实例存储到会话
对象中(或存储哈希表所用的任何对象)
如果需要存储多个客户端的详细信息,则使用
列表
,如果需要使用键查找项目,则使用字典。实验看看什么对你有用。我不确定这是最好的解决方案,但只是为了一般知识,如果你真的需要一个表,你可以使用它,它是ADO.NET的一部分(它是.NET的本机)
不建议这样做的原因是它不支持唯一键(如字典),并且通常会使场景中的事情复杂化 我不确定这是否是最好的解决方案,但仅就一般知识而言,如果您真的需要一个表,您可以使用它,它是ADO.NET的一部分(它是.NET的本机)
不建议这样做的原因是它不支持唯一键(如字典),并且通常会使场景中的事情复杂化 太棒了,我已经准备好工作和输入数据了,但是我该如何读取数据呢?用户名部分很简单,但第二个字段是类。我将使用什么语法提取此数据?在winforms中,您可以绑定到集合,例如使用listview,您可以执行以下操作:listbox.DataSource=myCollection;然后设置id和显示属性,如listbox.DisplayMember=“Name”;listbox.ValueMember=“IPAddress”;然后调用listbox.DataBind();这方面有很多教程,这是我在google之后找到的第一个。对不起,我的错,你不需要DataBind()方法。listbox.DataSource=userDict.Values.ToList();listbox.DisplayMember=“Name”;listbox.ValueMember=“IPAddress”;试试看,我只是做了一个这样的随机集合:userDict.Add(“Jim”,new User(){Name=“Jim”,IPAddress=“127.0.0.1”,Status=“Status1”);然后使用上面的代码工作,底部的框中填充了名称。太棒了,我已经有了这些代码来工作并输入数据,但是我该如何读取数据呢?用户名部分很简单,但第二个字段是类。我将使用什么语法提取此数据?在winforms中,您可以绑定到集合,例如使用listview,您可以执行以下操作:listbox.DataSource=myCollection;然后设置id和显示属性,如listbox.DisplayMember=“Name”;listbox.ValueMember=“IPAddress”;然后调用listbox.DataBind();这方面有很多教程,这是我在google之后找到的第一个。对不起,我的错,你不需要DataBind()方法。listbox.DataSource=userDict.Values.ToList();listbox.DisplayMember=“Name”;listbox.ValueMember=“IPAddress”;试试看,我只是做了一个这样的随机集合:userDict.Add(“Jim”,new User(){Name=“Jim”,IPAddress=“127.0.0.1”,Status=“Status1”);然后使用上面的代码,底部的框中填充了名称。