C# C如何使用枚举标识符编写JSON

C# C如何使用枚举标识符编写JSON,c#,json,excel,linq,replace,C#,Json,Excel,Linq,Replace,到目前为止,我正在编写一个将Excel转换为JSON的代码。 但我有一个问题,我需要在单词Match_u,Aka Match_u1,Match_u2,Match_u3之后对我正在写的每一行进行编号。 如果你看代码的结尾,我试着写下?但它给了我所有的匹配。。 如何使用Replace命令,以便在单词Match\之后实际放置相应的数字 IP=我要添加到句子中的另一个字符串。别理它 行[0]=从excel中的行中获取的文本 Match_u不是一个变量,它实际上是一个文本,我也可以在那里写Oded_u,然

到目前为止,我正在编写一个将Excel转换为JSON的代码。 但我有一个问题,我需要在单词Match_u,Aka Match_u1,Match_u2,Match_u3之后对我正在写的每一行进行编号。 如果你看代码的结尾,我试着写下?但它给了我所有的匹配。。 如何使用Replace命令,以便在单词Match\之后实际放置相应的数字

IP=我要添加到句子中的另一个字符串。别理它

行[0]=从excel中的行中获取的文本

Match_u不是一个变量,它实际上是一个文本,我也可以在那里写Oded_u,然后它会在[0]行上写Oded_uu=IP字符串+excel文本

Match_u是我实际上试图从文本中替换的文本,因为我无法在链接查询中替换它

使用var conn=新的OleDbConnectionconnectionString { 康涅狄格开放大学; var cmd=conn.CreateCommand; cmd.CommandText=$SELECT*FROM[{sheetName}$]; 使用var rdr=cmd.ExecuteReader { 如果rdr!=null { //LINQ查询-执行时将为每行创建匿名对象 var query=rdr.Cast.Selectrow=>new { 匹配=IP+行[0] }; //从LINQ查询生成JSON var json=JsonConvert.SerializeObjectquery; //将文件写入目标路径 对于int i=1;i请尝试正则表达式

    class Program
    {
        int i = 0;
        static void Main(string[] args)
        {
            string json = "match_   abc match_  def match_ hijmatch_";
            string pattern = "match_";

            Program p = new Program();
            MatchEvaluator myEvaluator = new MatchEvaluator(p.ReplaceCC);
            Regex r = new Regex(pattern);
            string output = r.Replace(json, myEvaluator);

        }
        public string ReplaceCC(Match m)
        // Replace each Regex cc match with the number of the occurrence.
        {
            i++;
            return m.Value + i.ToString();
        }
    }
因此,分配查询后,查询是一个匿名类型的IEnumerable,它将有0到多行。这些行尚未实际计算。需要记住的重要一点是,您创建的是匿名类型,而不是匿名对象,因此结果的所有枚举都必须是该类型,您无法逐个切换

有很多方法可以实现您想要的结果,但最方便的方法可能是在select枚举器中包含迭代器,然后返回类似以下内容的

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

...

var query = rdr.Cast<DbDataRecord>().Select((row, i) => {
    var result = new JObject();
    result.Add( $"match_{i}", IP + row[0]);
    return result;
});

什么是Match_uu和IP以及它们的定义位置?IP只是我添加到从Excel获取的行中的另一个字符串。如果您看到Match_u=IP+行[0],则Match_u是从linkQuery的位置获取的当转换为Json时,文本上的Match_uuu与文本上的Match_uuu基本相同。处理Json似乎很奇怪。Json描述列表,但索引是隐式的。您确定CSV这样的格式不适合您的用例吗?这是我的工作,因为我需要将Excels转换为Json,以提高工作效率,而不是手动执行。到目前为止一切都正常,它转换了我需要的所有内容和所有文本,除了那个讨厌的匹配,我需要在它后面加上数字。到目前为止,它把它写成。正确的文本=它正在做我需要它写的事,我只是不能发布它。对不起:P Match_uu=正确的文本匹配_u=正确的文本,我需要它作为匹配_u1=正确的文本text Match_2=correct textHi,我正在尝试这一个,但是我在add JsonObject上有一个错误,它不包含'add'@odedgross的定义。我更正了代码。很抱歉,我对编码还是有点陌生,现在我得到了关于.jsonvalue.pars意外字符'h'的错误。在第1行,第0列。我相信这是因为字符串IP=texticantshow因为它以h开头,每次我改变它时,它都会说一个未指定的字符,所以它有点像it@odedgross我彻底检查了我的答案非常感谢,我要试试这个!
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
                    
public class Program
{
    public static void Main()
    {
        var query = Enumerable
            .Range(1,5)
            .Select( (n, i) =>
               {
                   var result = new JObject();
                   result.Add($"match_{i}", n);
                   return result;
               });
        
        Console.WriteLine(
            JsonConvert.SerializeObject(
                query, 
                Formatting.Indented));
    }
}