【发布时间】:2014-04-08 06:39:19
【问题描述】:
我在从 linQ 列表中选择数组时遇到问题。
一些静态数据的一般数组-
List<string> nameList = new List<string>
{
"Jonathan", "Lisa", "Jordan", "Tyler", "Susan", "Brandon", "Clayton", "Elizabeth", "Jennifer"
};
var results = nameList.Where(n =>
n.StartsWith(term, StringComparison.OrdinalIgnoreCase));
return new JsonResult()
{
Data = results.ToArray(),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Linq 查询-
var names = (from u in db.Contacts
select u).ToList();
现在从上面的 linq 查询中将有来自此列的 names。我想通过制作其名称的数组来从上述查询中选择名称。如何在此查询中为 names 设置一个数组,就像它为基于静态的数据所做的那样。
编辑-
[HttpGet]
public JsonResult GetNames(string term)
{
var names = (from u in db.Contacts
where u.name.Contains(term)
select u).ToArray();
// A list of names to mimic results from a database
var results = names.Where(n =>
n.name.StartsWith(term, StringComparison.OrdinalIgnoreCase));
return new JsonResult()
{
Data = results.ToArray(),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
我已经从上面修改了这个方法,现在我可以在服务器端获取列表。但是在 json 结果中,它给我留下了internal server error (500)。
脚本-
<script type="text/javascript">
$(function () {
$('#typeahead').typeahead({
source: function (term, process) {
var url = '@Url.Content("~/Invoice/GetNames")';
return $.getJSON(url, { term: term }, function (data) {
alert(data);
return process(data);
});
}
});
})
</script>
【问题讨论】:
-
能否提供错误信息?
-
@Grundy,
A circular reference was detected while serializing an object of type -
如果您只需要联系人姓名,最好使用
select u.name而不是select u,在这种情况下也不应该是循环引用 -
@Grundy,那可能是我失踪了。很高兴它现在起作用了。
标签: c# arrays asp.net-mvc linq