【发布时间】:2019-01-29 08:47:40
【问题描述】:
场景: 我必须导出一个包含零件列表的 excel 文件。我们使用户能够选择列并在导出的文件中仅获取选定列的数据。由于这是一个动态报告,我没有使用任何具体的类来映射报告,因为这将导致在报告中导出空列标题,这是不必要的。我正在使用 Dynamic Linq 来处理这种情况。
我有一个从动态 linq 获取的动态对象列表。
[
{"CleanPartNo":"Test","Description":"test","AliasPartNo":["258","145","2313","12322"]},
{"CleanPartNo":"Test1","Description":"test1","AliasPartNo":[]}
]
我怎样才能从这个 json 中得到 4 行,比如
请注意,我不能使用强类型对象来反序列化/使用 JSON.Net 映射它
更新 以下是代码:
public class Part
{
public int Id { get; set; }
public string CleanPartNo { get; set; }
public string Description { get; set; }
public List<PartAlias> AliasPartNo { get; set; }
}
public class PartAlias
{
public int PartId { get; set; }
public int PartAliasId { get; set; }
public string AliasPartNo { get; set; }
}
var aliases = new List<PartAlias> {
new PartAlias{AliasPartNo="258" },
new PartAlias{AliasPartNo="145" },
new PartAlias{AliasPartNo="2313" },
new PartAlias{AliasPartNo="12322" }
};
List<Part> results = new List<Part> {
new Part{CleanPartNo="Test", Description= "test", PartAlias=aliases },
new Part{CleanPartNo="Test1", Description= "test1" }
};
var filters = "CleanPartNo,Description, PartAlias.Select(AliasPartNo) as AliasPartNo";
var dynamicObject = JsonConvert.SerializeObject(results.AsQueryable().Select($"new ({filters})"));
在dynamicObject变量中我得到了上面提到的json
【问题讨论】:
-
您能提供一个minimal reproducible example吗?具体来说,如何设置此代码以在控制台应用程序中运行它?
-
我已经更新了代码,请检查
-
我们能知道作为数组的列的名称吗?这将使这 2 班轮
标签: c# json linq json.net dynamic-linq