如何从linq选择中创建一个自动数字属性
本文关键字:一个 属性 数字 linq 选择 创建 | 更新日期: 2023-09-27 18:02:03
我想从一个字符串创建一个List<myItem>
来填充myValue
属性。
"233 984 5 66 304 219 277 790"
类:public class myItem
{
public long ID; // autonumeric id go here
public long myValue; // string values go here
public string otherProperties; //I will fill later from other source
}
我可以读取字符串,使用空格分割并解析为long[]
:
string line1 = "233 984 5 66 304 219 277 790";
string[] words = line1.Split(' ');
long[] myValues = Array.ConvertAll(words, s => long.Parse(s));
但不知道如何创建List<myItem>
var list =
line1.Split(' ').
Select((word, ix) => new myItem() {
ID = ix,
myValue = long.Parse(word)
}).
ToList();
你可以这样做:
- 用
StringSplitOptions.RemoveEmptyEntries
分割字符串,这样如果单词之间有多个空格,它们可以被忽略。 - 使用
IEnumerable<T>.Select
过载支持索引 - 项目输出到你的类
List<myItem> list = line1.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Select((r, i) => new { Index = i, Value = r })
.Select(t => new myItem
{
ID = t.Index,
myValue = long.Parse(t.Value),
}).ToList();
我还应该补充说,上面的操作可以通过索引重载的单个Select
完成,而不是使用Index
和Value
字段选择匿名类型,索引和值可以投影到myValues
类。