My class:
public class Definitions
{
public string Name { get; set; }
public string Id { get; set; }
}
我到目前为止管理了这个: 如果我理解我的结果 Definitions.Name ..and Definitions.Id
全部保存在List obejct中!? (多数民众赞成我想得到的东西,它有效,因为我可以用foreach访问它)
public static void ReadDefinitions2()
{
var files = (from name in Directory.EnumerateFiles(Settings.NotecadddyDefinitionsFolder)
select new Definitions
{
Name = Path.GetFileNameWithoutExtension(name),
Id = File.ReadLines(name).Skip(2).First()
}).ToList();
foreach (Definitions f in files)
{
Console.WriteLine(f.Name);
Console.WriteLine(f.Id);
}
}
++ 1。题: 来自哪里? 我从网上得到了部分片段,...所以我真的不理解它100%。
++ 2.Question: 为什么我不能使用
Id = File.ReadLines(name).Skip(2).Take(1)
而不是:
Id = File.ReadLines(name).Skip(2).First()
错误: Der Typ“System.Collections.Generic.IEnumerable”kann nicht implizit in“string”konvertiert werden。 我知道First已经是最优的,但我只是想明白,因为对我来说它是一样的!?拿1 =!先拿????
++ 3.Question:我的List Object / variabel是什么东西? 定义f或文件?
我做了一些性能测试,有3.000个文件,一个25KB~130ms ......内部VS.(debug / release = same) 好像。 现在当我不添加.ToList();并且不做“foreach”,然后时间= 0ms。 (如果我理解正确,它基本上什么都不做,因为没有结果) -withToList()“它总是130ms,无论是foreach还是no。
那么我的结果/变量/列表究竟是什么? .ToList()做了什么,因为我可以用foreach处理我的List?
++ 4.Question:(相关)
我有一个对象定义f.Name AND 定义f.Id 在某种数组/列表中?
++ 5.Question: 如何将其返回主程序? 我会一直使用这个列表。这是我需要的那个对象/类的唯一实例。
尝试了许多事情......没有任何作用: 返回xxxx; ?? 以及如何启动该方法?请完整示例如:
static void Main()
{
Definitions=ReadDefinitions2();
}
public static ReadDefinitions2()
{
return Definitions Object(Name and ID):
}
答案 0 :(得分:1)
我会一次尝试解释每个问题。
在这种情况下,问题:来自哪里?我得到了片段 网,...所以我真的不明白。
文件是List
Definitions
,要访问列表中您必须循环遍历项目的每个定义,f
是指向定义的变量/引用。
问题:为什么我不能使用
Id = File.ReadLines(name).Skip(2).Take(1)
First()
返回单个/ Definitions
,其中Take
返回IEnumerable
,这就是您看到错误的原因。您可以执行此操作Id = File.ReadLines(name).Skip(2).Take(1).First()
问题:我的List Object / variabel是什么东西?定义f或文件?
Definitions
,您之前的Linq
查询构建Definitions
(select new Definitions
)
关于效果,在第一种情况下,您创建的是Enumeration
,而不是物理List
,这就是您注意0ms
的原因。
问题:我有一个对象定义f.Name和定义f.Id 在某种数组/列表中?
我认为Defintions
是用户定义的类型,您可能在代码中使用它(不确定它是否在问题中)。
问题:如何将其返回主程序?我将使用此列表 每时每刻。这是我需要的那个对象/类的唯一实例。
修改方法签名以返回List<Definitions>
并将值返回给调用者。
public static List<Definitions> ReadDefinitions2()
{
var files = (from name in Directory.EnumerateFiles(Settings.NotecadddyDefinitionsFolder)
select new Definitions
{
Name = Path.GetFileNameWithoutExtension(name),
Id = File.ReadLines(name).Skip(2).First()
}).ToList();
foreach (Definitions f in files)
{
Console.WriteLine(f.Name);
Console.WriteLine(f.Id);
}
return files;
}
现在在Main
方法
static void Main()
{
var definitions=ReadDefinitions2();
// place your logic
}