Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在尝试使用linq输出所有信息_C#_Linq_Csv - Fatal编程技术网

C# 正在尝试使用linq输出所有信息

C# 正在尝试使用linq输出所有信息,c#,linq,csv,C#,Linq,Csv,我编写了一些代码,通过名为seqNum的标识符匹配两个数组,并从数学中得到了答案。我能够打印出我得到的seqNum和答案,但是我在获取seqNum附带的所有其他信息时遇到了问题。我希望能够输出如下内容: Name Date `seqNum` Answer... 我的代码给了我答案,但它只是用不同的seqNums和answers一次又一次地吐出文件中的名字 代码如下: private void executeBtn_Click(object sender, EventArgs e) {

我编写了一些代码,通过名为
seqNum
的标识符匹配两个数组,并从数学中得到了答案。我能够打印出我得到的
seqNum
答案
,但是我在获取
seqNum
附带的所有其他信息时遇到了问题。我希望能够输出如下内容:

Name Date `seqNum` Answer... 
我的代码给了我答案,但它只是用不同的
seqNum
s和
answer
s一次又一次地吐出文件中的名字

代码如下:

private void executeBtn_Click(object sender, EventArgs e)
{
    //NET OIL VARIANCE MATHEMATICS
    if (netOilRadBtn.Checked)
    {
        using (var sw = new StreamWriter("testNetOil.csv"))
        {
            var items = netOil.Zip(seqNum, (oil, seq) => new { Oil = oil, Seq = seq });
            var items2 = netOil2.Zip(seqNum2, (oil, seq) => new { Oil = oil, Seq = seq });
            sw.WriteLine("Lease Name, Field Name, Reservoir, Operator, County, ST, Majo, Resv Cat, Discount Rate, Net Oil Interest, Net Gas Interest, Working Interest, Gross Wells, Ultimate Oil, Ultimate Gas, Gross Oil, Gross NGL, Gross Gas, Net Oil, Net Gas, Net NGL, Revenue To Int., Oper. Expense, Total Invest., Revenue Oil, Revenue Gas, Operating Profit, Revenue NGL, Disc Net Income, SEQ, Well ID, INC ASN, Life Years, Own Qual, Production Tax, NET OIL VARIANCE");

            foreach (var item in items.Join(items2, i => i.Seq, i => i.Seq, (a, b) => new
            {SeqID = a.Seq, Answer = this.GetTheAnswer(Convert.ToDouble(a.Oil), Convert.ToDouble(b.Oil)) 

            }))

            {
                int x = 0;
                x.Equals(item.SeqID);
                while (x != -1)
                {
                    sw.WriteLine(leaseName[x] + "," + item.SeqID + "," + item.Answer);
                    x--;
                }
因此,基本上我只需要打印出匹配的名称和正确的
seqNum
Answer
。如果有人有任何想法或意见,我们将不胜感激。如果有人需要了解,我的数学方法非常简单:

public double GetTheAnswer(double first, double second)
{
    double answer = (first - second) / second;
    return answer;
}

您需要更改x的赋值,因为您没有给它赋值

int x = Convert.ToInt32(item.SeqID); int x=转换为32(项目SeqID);
尝试一下,看看是否会得到不同的结果。

那么,应该将数据包含在匿名类型中

foreach (var item in items.Join(items2, i => i.Seq, i => i.Seq, (a, b) => new
   {
        SeqID = a.Seq, 
        Answer = this.GetTheAnswer(Convert.ToDouble(a.Oil),
                                   Convert.ToDouble(b.Oil)),
        Name = a.Name, // b.Name?
        Date = a.Date, // b ?
        seqNum  = a.seqNum // b ?
   }))
当(
foreach
中循环时,您在尝试什么?循环遍历一组匿名类型,其中没有重复数据,
item
只是一组平面数据


所以
intx=0之后的所有内容是无用的。只需逐行输出您在匿名类型中收集的数据。由于标题(“租约名称、字段名称、存储库、运算符……)长得多,我认为部分
new{…}

中应该有更多内容,我认为这是错误的:int x=0;x.Equals(item.SeqID);您没有在那里赋值。它必须是int x=item。SeqID@StephenBorg您不能这样做,因为它说您不能将类型“string”隐式转换为“int”int x=convert.ToInt32(item.SeqID).因为x在你的代码中总是保持为0。我一直在努力解决这个问题,我理解你在int x=0之后说的所有内容,但我不太确定如何在新的部分中添加更多内容,你为什么将Name=a.Name等等。我如何才能像你那样定义更多的匿名类型?没有更多的匿名类型,应该有更多的匿名类型ld(可能)是匿名类型中的更多属性。但是您应该显示示例数据和所需的输出。我在这里运行盲操作。我有一组数组,如字符串[]leaseName2=新字符串[1000];字符串[]fieldName2=新字符串[1000];字符串[]reservoir2=新字符串[1000];我希望在csv文件的一行中输出SeqNum标识符中的所有匹配数据,如…LeaseName、字段名、库…所有数据。输入数据在两个文件和SeqNum之间都匹配,如果这有帮助的话,很抱歉,这有帮助吗?