gpt4 book ai didi

c# - 如何使用 LINQ 在 C# 中使用字典属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:51 24 4
gpt4 key购买 nike

虽然我用户知道如何获得; & 放;对于像字符串这样的简单类型,现在可以获取或设置更多属性,例如 Dictionary 吗?

我有一个小的 DOS 程序试图做到这一点。下面的片段。

# User.cs
namespace LDIFMod
{
public class User
{

public string UserHash { get; set; }
public string UserID { get; set; }
public Dictionary<string, string> UserDict { get; set; } <- how to do this???
}

}

在我的 Program.cs 中

var query = from line in File.ReadAllLines(args[0])
let UserRecord = line.Split(',')
select new User()

{

UserHash = UserRecord[2].Trim() +UserRecord[3].Trim(),
UserID = UserRecord[4].Trim(),
UserDict.???? // userDict should contain key = UserRecord[5] & value = UserRecord[9]

}

最佳答案

您需要先在用户类的构造函数中初始化字典。使用 private set 来防止人们重新初始化字典。

# User.cs
namespace LDIFMod
{
public class User
{
User()
{
UserDict = new Dictionary<string, string>()
}
public string UserHash { get; set; }
public string UserID { get; set; }
public Dictionary<string, string> UserDict { get; private set; }
}
}

你的调用代码变成了

var query = from line in File.ReadAllLines(args[0])
let UserRecord = line.Split(',')
select new User()
{
UserHash = UserRecord[2].Trim() +UserRecord[3].Trim(),
UserID = UserRecord[4].Trim(),
UserDict.Add(UserRecord[5],UserRecord[9]);
}

这会为每个查询行返回一个字典。如果您希望所有行共享一个字典,您需要将其设为静态或不将其存储在 User 中。如果您这样做,请注意 linq 会延迟执行,因此在您完全枚举查询之前,字典不会被完全填充。


我想我会举一个例子,说明如何在一个字典中使用所有这些。

# User.cs
namespace LDIFMod
{
public class User
{
public string UserHash { get; set; }
public string UserID { get; set; }
public readonly string[] SourceData {get; private set;}
}
}

这里是查询

var query = from line in File.ReadAllLines(args[0])
let UserRecord = line.Split(',')
select new User()
{
UserHash = UserRecord[2].Trim() + UserRecord[3].Trim(),
UserID = UserRecord[4].Trim(),
SourceData = UserRecord;
}
var UserLookp = query.ToDictionary((user) => user.SourceData[5], (user) => user.SourceData[9]);

这纯粹是靠内存,没有检查错误的ide,所以可能会有一些错误。

关于c# - 如何使用 LINQ 在 C# 中使用字典属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com