gpt4 book ai didi

c# - 如何从 Asp Web API 返回单个 DataRow 对象?

转载 作者:太空狗 更新时间:2023-10-29 23:29:15 26 4
gpt4 key购买 nike

所以我正在编写一些 Asp.Net WebApi 代码来 Hook 没有使用模型类的旧 C# 后端代码。 (从 DataAccess 返回的纯数据表,疯狂吧?我知道)

以下是我放在服务器端的代码。

 public IHttpActionResult GetProduct(int campaignID, int productID)
{
var so = new SearchOptions(campaignID)
{
ProductID = productID
};

var result = SearchManager.Search(so);
if (result == null || result.Rows.Count == 0)
return NotFound();
return Ok(result.Rows[0]);

}

我期待得到这样的回应:

{
Field1: "field1",
Field2: "field2",
...
}

但实际上我有这个:

{
"rowError": "",
"rowState": 2,
"table": [
{
Field1 : "field1",
Field2 : "field2",
...
}
],
"itemArray": ["field1","field2"],
"hasErrors": false
}

我不想要所有这些 rowError, rowState...etc

如果我在服务器端这样做:

public IHttpActionResult GetProduct(int campaignID, int productID)
{
var so = new SearchOptions(campaignID)
{
ProductID = productID
};

var result = SearchManager.Search(so);
if (result == null || result.Rows.Count == 0)
return NotFound();
return Ok(result);

}

我收到这个:

[{Field1: "field1", Field2: "field2"..}]

不幸的是,它被 ngResource get 方法拒绝了,因为它是一个数组而不是单个 Json 对象。

我该怎么办?如果我只想将单个数据行作为 Json 字符串返回。

理想情况下,我想避免按照 Manoz 的建议走上创建响应对象的道路。 (虽然感谢你的回答 Manoz)

谢谢

最佳答案

您可以使用 LINQ 将 DataRow 转换为 Dictionary:

public IHttpActionResult GetProduct(int campaignID, int productID)
{
var so = new SearchOptions(campaignID)
{
ProductID = productID
};

var result = SearchManager.Search(so);
if (result == null || result.Rows.Count == 0)
return NotFound();

var row = result.Rows[0];
return Ok(row.Table.Columns
.Cast<DataColumn>()
.ToDictionary(c => c.ColumnName, c => row[c]));
}

该操作会根据需要返回 JSON:{ Field1: "field1", Field2: "field2", ... }

关于c# - 如何从 Asp Web API 返回单个 DataRow 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39263867/

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