C# 存储数据集(在表中)的最佳方式

C# 存储数据集(在表中)的最佳方式,c#,client,hashtable,C#,Client,Hashtable,我有一个客户端和一个服务器程序,我目前正在使用哈希表来存储客户端连接时的名称和IP地址。现在我需要添加另一个变量,客户端在连接时将发送给服务器,但据我所知,哈希表只有2列(Key和value)。有没有其他方法可以代替哈希表存储这些数据?您可以将对象粘贴到哈希表或字典中 所以,让自己成为一个具有某种描述的用户类,然后将用户对象以其名称存储在字典中 然后,当您需要添加其他属性时,这将有助于获取这些属性 public class User { public string Name { get;

我有一个客户端和一个服务器程序,我目前正在使用哈希表来存储客户端连接时的名称和IP地址。现在我需要添加另一个变量,客户端在连接时将发送给服务器,但据我所知,哈希表只有2列(Key和value)。有没有其他方法可以代替哈希表存储这些数据?

您可以将对象粘贴到哈希表或字典中

所以,让自己成为一个具有某种描述的用户类,然后将用户对象以其名称存储在字典中

然后,当您需要添加其他属性时,这将有助于获取这些属性

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”);然后使用上面的代码,底部的框中填充了名称。