【问题标题】:select array from linq list从 linq 列表中选择数组
【发布时间】: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


【解决方案1】:

很简单:

var names = (from u in db.Contacts
            select new { Name = u.Name}).ToArray();

【讨论】:

    【解决方案2】:

    试试

    var names = db.Contacts.Select(x => x.PROP_NAME).ToArray();
    

    【讨论】:

    • 试试看:return Json(names,JsonRequestBehavior.AllowGet);
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多