我正在尝试转换以下代码以返回数组结果。但我无法让它发挥作用。我是Linq框架的新手。
以下是我的代码:
// GETAll api/category
public IEnumerable<Category> GetAll()
{
nopMass db = new nopMass();
var model = db.Categories.Where(x => x.ParentCategoryId == 0);
return model.ToArray();
}
这就是我想要它返回
// GETAll api/category
public IEnumerable<Category> GetAll()
{
return new Category[]
{
new Category
{
ParentCategoryId = 1,
Name = "New Vehicles"
},
new Category
{
ParentCategoryId = 2,
Name = "Used Vehicles"
}
};
}
当我访问HTML中的第一个代码时,我没有显示结果。第二个代码给出了输出。
这是Html和Jquery代码
<ul id="products" />
<script>
var uri = 'api/category';
$(document).ready(function () {
// Send an AJAX request
try
{
$.getJSON(uri)
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
$('<li>', { text: formatItem(item) }).appendTo($('#products'));
});
});
}
catch (e) {
alert(e.message);
}
});
function formatItem(item) {
return item.Name;
}
</script>
答案 0 :(得分:2)
这是你的答案重构LINQ
// GETAll api/category
public IEnumerable<Category> GetAll() {
using(var db = new nopMass()) {
var cats = db.Categories
.Where(x => x.ParentCategoryId == 0)
.AsEnumerable()
.Select(cat => new Category {
ParentCategoryId = cat.ParentCategoryId,
Name = cat.Name
})
.ToArray();
return cats;
}
}
另外,正如评论中所提到的,确保在使用后正确处理db上下文。
答案 1 :(得分:1)
花了一些时间,但我终于开始工作了:)
// GETAll api/category
public IEnumerable<Category> GetAll()
{
nopMass db = new nopMass();
var model = db.Categories.Where(x => x.ParentCategoryId == 0);
Category[] cats = new Category[model.Count()];
int index = 0;
foreach (var cat in model)
{
cats[index] = new Category { ParentCategoryId = cat.ParentCategoryId, Name = cat.Name };
index++;
}
return cats;
}