我有一个应用程序,我经常删除tableSections并将其替换为另一个。这是我使用的典型代码:
TableSection 2 - 称为“卡片”
if(tableView.Root.Count> 2) tableView.Root.RemoveAt(2); //删除名为“Cards”的部分 tableView.Root.Add(CreateTableSection());
我想让代码更清洁一点。有没有办法可以通过使用我分配给该部分的名称来删除tableSection,还有一种方法可以在命名部分之后追加?
答案 0 :(得分:2)
var header = tableView.Root.FirstOrDefault(r => r.Title == "Header");
if (header != null) {
tableView.Root.Remove(header);
}
或者,您可以在创建Header部分时保持对Header部分的引用,然后使用该引用将其删除。这使您无需在删除之前找到它。
答案 1 :(得分:0)
您可以为var filtered = myList.Where(p=>idList.Contains(p.Id));
创建扩展方法,并使代码更清晰。
扩展方法
TabelRoot
<强>用法强>
public static class Extensions
{
public static TableSection FindSection(this TableRoot root, string title)
{
return root.FirstOrDefault(r => r.Title == title);
}
public static bool AppendAfter(this TableRoot root, string title, TableSection toBeAdded)
{
var section = root.FindSection(title);
if (section != null)
{
var index = root.IndexOf(section);
root.Insert(index + 1, toBeAdded);
}
return false;
}
public static bool AppendBefore(this TableRoot root, string title, TableSection toBeAdded)
{
var section = root.FindSection(title);
if (section != null)
{
var index = root.IndexOf(section);
root.Insert(index, toBeAdded);
}
return false;
}
public static bool Remove(this TableRoot root, string title)
{
var section = root.FindSection(title);
if (section != null)
return root.Remove(section);
return false;
}
public static bool Replace(this TableRoot root, TableSection newSection)
{
var section = root.FindSection(newSection?.Title);
if (section != null)
{
var index = root.IndexOf(section);
root.RemoveAt(index);
root.Insert(index, newSection);
}
return false;
}
}