gpt4 book ai didi

c# - `IEnumerable` 文件的内容的 `.csv` 类型应该是什么?

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

我有一个 .csv文件 ( Book1.csv) 包括有限状态机的转换:

q_src,eve,q_dst
q0,sig1,q1
q1,sig2,q2

我需要编写一个方法来查找转换的结果。

State FindDestination(State q0, Event s0)
{
var transitions = File.ReadAllLines(@"Book1.csv").Skip(1).Select(x => x.Split(','));
State newq = from t in transitions
where t.q_src ==q0 && t.eve == s0
select new t.q_dst;
return newq;
}

但效率不高,因为每次转换时该方法都会读取文件:

现在,如果我尝试读取文件一次并将其内容传递给方法,我不知道现在我应该为 transitions 使用什么类型在方法的参数中:

var transitions = File.ReadAllLines(@"Book1.csv").Skip(1).Select(x => x.Split(','));

State FindDestination(State q0, Event s0, ? transitions) //?type
{
State newq = from t in transitions
where t.q_src ==q0 && t.eve == s0
select new t.q_dst;
return newq;
}

此外,StateEvent类只有一个属性 Name .

我读过粗略的想法是使用 IEnumerable<?> ,但是 ? 是什么?输入 .csv文件?

最佳答案

拆分每一行后,您将得到 IEnumerable<string[]>

IEnumerable<string[]> transitions = File.ReadAllLines(@"Book1.csv").Skip(1).Select(x => x.Split(','));

所有返回的类型都是 System.String

string FindDestination(State q0, Event s0) {
var transitions = File.ReadAllLines(@"Book1.csv").Skip(1).Select(x => x.Split(','));
var newq = from t in transitions
where t[0] == q0.Name && t[1] == s0.Name
select t[2];

return newq.FirstOrDefault();
}

所以传递一个 IEnumerable<string[]>到修改后的方法

string FindDestination(State q0, Event s0, IEnumerable<string[]> transitions) {

var newq = from t in transitions
where t[0] == q0.Name && t[1] == s0.Name
select t[2];

return newq.FirstOrDefault();
}

关于c# - `IEnumerable<T>` 文件的内容的 `.csv` 类型应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44359347/

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