- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何转换这个函数:
void MyFunc () {
foreach (var k in problems.Keys)
{
var list = new ObservableCollection<ListViewItem>();
listViewItems.Add(k, list);
foreach (var i in problems[k].Items)
{
list.Add(new ListViewItem
{
Token = i.Token,
IsFatalError = i.IsFatal,
Checked = false,
Line = i.Token.Position.Line,
Description = i.Description,
BackgroundBrush = i.IsFatal ? Brushes.Red : null
});
}
}
}
LINQ 查询语法 ?这是类型和变量:
public class ProblemsList {
public class Problem {
public IToken Token { get; set; }
public string Description { get; set; }
public bool IsFatal { get; set; }
}
public List<Problem> Items { get { return problems; } }
}
public class ListViewItem {
public bool IsFatalError { get; set; }
public bool Checked { get; set; }
public int Line { get; set; }
public string Description { get; set; }
public Brush BackgroundBrush { get; set; }
}
Dictionary<string, ProblemsList> problems;
Dictionary<string, ObservableCollection<ListViewItem>> listViewItems
= new Dictionary<string, ObservableCollection<ListViewItem>>();
最佳答案
以下是我的做法(使用链式方法语法):
listViewItems = problems.ToDictionary(
p => p.Key,
p => new ObservableCollection<ListViewItem>(
p.Value.Items.Select(
i => new ListViewItem
{
Token = i.Token,
IsFatalError = i.IsFatal,
Checked = false,
Line = i.Token.Position.Line,
Description = i.Description,
BackgroundBrush = i.IsFatal ? Brushes.Red : null
}
)
)
);
尽可能使用查询语法的版本:
listViewItems = (
from p in problems
select new
{
Key = p.Key,
Value = from i in p.Value.Items
select new ListViewItem
{
Token = i.Token,
IsFatalError = i.IsFatal,
Checked = false,
Line = i.Token.Position.Line,
Description = i.Description,
BackgroundBrush = i.IsFatal
? Brushes.Red
: null
}
}
).ToDictionary(x => x.Key, x => x.Value);
关于c# - 如何将 2 层深的 foreach 循环转换为 LINQ 表达式以生成 Dictionary<string,SomeList<Item>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004152/
我知道 somelist[len(somelist)] 无法访问定义列表之外的索引 - 这是有道理的。 但是为什么 Python 允许你做 somelist[len(somelist):]? 我什至读
我正在使用 os.walk() 过滤目录组件: exclude_dirs = ['a', 'b'] for root, dirs, files in os.walk(mytopdir): dirs
显然有很多方法可以迭代一个集合。想知道是否存在任何差异,或者为什么您会使用一种方式而不是另一种方式。 第一种: List someList = foreach(string s in someLis
我有时会遇到这种打印或返回列表的方式 - someList[:]。我不明白人们为什么要使用它,因为它会返回完整列表。 为什么不简单地写 someList,不带 [:] 部分? 最佳答案 [:] 创建一
在 Angular 中进行模板化时,有没有办法在显示列表长度之前过滤列表?例如,我可以做类似 {{category.products.where(p => p.IsActive).length}} 的
我有一个用于 JAVA 项目的 TestNG 测试套件,并且在那里我有一个 @Test(DataProvider="ListOfObjects") 注释方法。它提供了大约 20 行数据的方法。(因此该
如何转换这个函数: void MyFunc () { foreach (var k in problems.Keys) { var list = new Observa
我是一名优秀的程序员,十分优秀!