如何根据C#中的查询表达式在没有索引的数组中添加元素?

时间:2016-10-05 14:30:28

标签: c# arrays linq

在我的函数中,我正在更新我的字符串DocumentLangaugeString,如代码所示。

现在,我需要在我的int [] DocumentLanguagesIds中添加元素, 我可以使用的查询表达式是:        from mi in ContextMenuItems where mi.IsChecked select mi.Data.Id

我的int []应该有被检查的项目(IsChecked = true),我该如何维护这个数组?每次用户点击该项时都会调用该函数。

这里ContextMenuItems是class属性,它具有我需要在我的数组中添加的ID。

private void ClickOnLanguageContextMenu(LanguageContextMenuItemViewModel item)
{
    item.IsChecked = !item.IsChecked;
    DocumentLanguagesString = string.Join(", ", from mi in ContextMenuItems where mi.IsChecked select mi.Data.Description);
    DocumentLanguagesIds = /*need a way to add ids over here*/                   
}

2 个答案:

答案 0 :(得分:0)

为了不对Id属性重复查询,您可以执行以下操作:

var result = (from mi in ContextMenuItems where mi.IsChecked
              select new { mi.Data.Description, mi.Data.Id }).ToList();

DocumentLanguagesString = string.Join(", ", result.Select(x => x.Description));
DocumentLanguagesIds = result.Select(x => x.Id).ToArray();

答案 1 :(得分:0)

也许

DocumentLanguagesIds = 
    (from mi in ContextMenuItems where mi.IsChecked select mi.Data.Id)
    .ToArray();