C# C语言中的VFP游标?

C# C语言中的VFP游标?,c#,cursor,visual-foxpro,C#,Cursor,Visual Foxpro,我有一个旧的visualfoxpro程序,我需要用c语言重写。 在那里,我们使用VFP中的游标读取.txt文件并将其加载到临时游标中 例如,在FoxPro中如下所示:mb5b是mb5b文本文件 SELECT werk,matnr,ALLTRIM(matnr)+ALLTRIM(werk) as matwerk,sum(zugang) as zugang,sum(abgang) as abgang INTO CURSOR mb5b_temp FROM mb5b GROUP BY werk,matnr

我有一个旧的visualfoxpro程序,我需要用c语言重写。 在那里,我们使用VFP中的游标读取.txt文件并将其加载到临时游标中

例如,在FoxPro中如下所示:mb5b是mb5b文本文件

SELECT werk,matnr,ALLTRIM(matnr)+ALLTRIM(werk) as matwerk,sum(zugang) as zugang,sum(abgang) as abgang INTO CURSOR mb5b_temp FROM mb5b GROUP BY werk,matnr
这些游标在c中不存在。我没有发现这样的东西。 因此,我创建了一个DataTable,在读取文件时,我将其插入DataTable

DataTable dt_mb5b_temp = new DataTable();
dt_mb5b_temp.Columns.Add("matnr");
dt_mb5b_temp.Columns.Add("werk");
dt_mb5b_temp.Columns.Add("matwerk");
dt_mb5b_temp.Columns.Add("zugang");
dt_mb5b_temp.Columns.Add("abgang");
while ((mb5bline = sr_mb5b.ReadLine()) != null)
{
    DataRow dr = dt_mb5b_temp.NewRow();
    string[] mb5b = mb5bline.Split(new Char[] { '|' });
    dr["matnr"] = mb5b[1].Trim();
    dr["werk"] = mb5b[2].Trim();
    dr["matwerk"] = mb5b[1].Trim() + mb5b[2].Trim();
    dr["zugang"] = mb5b[6].Trim();
    dr["abgang"] = mb5b[7].Trim();                        
}
我想我可以使用上面提到的select语句,但它不起作用。。。目前我还没有想到其他解决方案:/

当然,我也可以将其插入到DB中,然后使用select,但我尽量避免这需要两个额外的表,我认为这些插入和select将花费很长时间。 有没有可能让它工作起来

谢谢

如果您需要更多信息,请告知。

查看此网站

按ienum分组

    class Pet
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

    // Uses method-based query syntax. 
    public static void GroupByEx1()
    {
        // Create a list of pets.
        List<Pet> pets =
            new List<Pet>{ new Pet { Name="Barley", Age=8 },
                           new Pet { Name="Boots", Age=4 },
                           new Pet { Name="Whiskers", Age=1 },
                           new Pet { Name="Daisy", Age=4 } };

        // Group the pets using Age as the key value  
        // and selecting only the pet's Name for each value.
        IEnumerable<IGrouping<int, string>> query =
            pets.GroupBy(pet => pet.Age, pet => pet.Name);

        // Iterate over each IGrouping in the collection. 
        foreach (IGrouping<int, string> petGroup in query)
        {
            // Print the key value of the IGrouping.
            Console.WriteLine(petGroup.Key);
            // Iterate over each value in the  
            // IGrouping and print the value. 
            foreach (string name in petGroup)
                Console.WriteLine("  {0}", name);
        }
    }

    /*
     This code produces the following output:

     8
       Barley
     4
       Boots
       Daisy
     1
       Whiskers
    */

从VFP到C的转换不是有点过分了吗?如果手头的问题只是读取一个txt文件并将其解析为一个对象,只需使用C风格即可!如果你喜欢查询风格,你可以给LINQ一个机会,检查一下@Simon Rapilly,你能给我一个简单的例子吗?我从来没有用过凌,我被卡住了。。。我想,举一个小例子,你如何把它放到一个列表中,并用一点排序来做,会有所帮助。只要把它作为答案贴出来,我就接受了!使用LINQ只是一个例子,一个简单的for循环就可以做到这一点,这完全取决于txt文件是如何构造的,你能在问题中详细说明它的格式吗?如果你想了解LINQ,那就从它开始吧,非常好,谢谢。我没有让它按我需要的那样工作,但我也没有在linq上花费更多的时间,所以我用数据库插入和选择来完成它。。。就我对Linq的完全新手而言,这是现在让它工作起来的更快的方法,但是感谢这一点,帮助我开始学习;
    class Pet
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

    // Uses method-based query syntax. 
    public static void GroupByEx1()
    {
        // Create a list of pets.
        List<Pet> pets =
            new List<Pet>{ new Pet { Name="Barley", Age=8 },
                           new Pet { Name="Boots", Age=4 },
                           new Pet { Name="Whiskers", Age=1 },
                           new Pet { Name="Daisy", Age=4 } };

        // Group the pets using Age as the key value  
        // and selecting only the pet's Name for each value.
        IEnumerable<IGrouping<int, string>> query =
            pets.GroupBy(pet => pet.Age, pet => pet.Name);

        // Iterate over each IGrouping in the collection. 
        foreach (IGrouping<int, string> petGroup in query)
        {
            // Print the key value of the IGrouping.
            Console.WriteLine(petGroup.Key);
            // Iterate over each value in the  
            // IGrouping and print the value. 
            foreach (string name in petGroup)
                Console.WriteLine("  {0}", name);
        }
    }

    /*
     This code produces the following output:

     8
       Barley
     4
       Boots
       Daisy
     1
       Whiskers
    */