【问题标题】:Genereric.List to a Dictionary/ListGeneric.List 到字典/列表
【发布时间】:2022-11-10 18:25:54
【问题描述】:

我有一个接收 FormCollection 的方法。我需要将它的列表传递给我的应用程序层。

我在做什么和工作:

var formIndexes = form.AllKeys.Select((e, i) => new { Name = e, Index = i }).Where(o => o.Name.Contains("StatusId")).ToList();
var formValues = formIndexes.Select(e => new { Value = form[e.Index], Name = e.Name }).ToList();

但 formValues 是 Generic.List,我需要转换为 List 或 Dictionary。

错误:无法从 'System.Collections.Generic.List<<anonymous type: string Value, string Name>>' 转换为 'System.Collections.Generic.Dictionary<string, string>'

[解决了] 在@DanielA.White 的帮助下,我解决了:

formIndexes.Select(e => new { Value = form[e.Index], Name = e.Name }).ToDictionary(a => a.Name, b => b.Value);

【问题讨论】:

  • linq 有ToDictionary()
  • @DanielA.White 谢谢!!解决了 formIndexes.Select(e => new { Value = form[e.Index], Name = e.Name }).ToDictionary(a => a.Name, b => b.Value);

标签: c# .net


【解决方案1】:

FormcCollection,如果你检查源,已经设置了访问器。 所以它可以作为字典访问而无需转换:

        [HttpPost] 
        public ActionResult Submit(FormCollection fc)
        {
            ViewBag.Id = fc["Id"];
            ViewBag.Name = fc["Name"];
            bool chk = Convert.ToBoolean(fc["Addon"].Split(',')[0]);
            ViewBag.Addon = chk;

            return View("Index");
        }

检查here以获得进一步的解释

【讨论】:

    【解决方案2】:

    根据错误文本,最终结果应该是字典,而不是列表。测试这个

    var formValues = formIndexes.ToDictionary(x => x.Index, x => x.Name);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多