我试图执行与prepareLayout
相当的C#。我开始使用reloadData
循环逐行遍历表,但是我忘记了无法通过cache.removeAll()
访问列。
我如何实现这一目标?我见过的大多数示例都是针对一个特定行,目的是将其值转换为字符串,但我的任务是将值Select * where [columnname] = [value]
的所有条目移动到存档表中。
我可以继续使用以下代码吗?或者我是以错误的方式接近这个?
foreach
答案 0 :(得分:3)
您可以使用强类型的Field
extension method并支持可空类型。您有索引,名称或public class PostViewHolder extends RecyclerView.ViewHolder
public void fill(Post post) {
if (post.type == PostType.IMAGE) {
postImage.setVisibility(View.VISIBLE);
postName.setVisibility(TextUtils.isEmpty(post.name) ? View.VISIBLE : View.GONE);
/*if (TextUtils.isEmpty(post.summary))
postContent.setVisibility(View.GONE);*/
}else{ //post.type == PostType.TEXT
postImage.setVisibility(View.GONE);
postName.setVisibility(View.VISIBLE);
postContent.setVisibility(View.VISIBLE);
}
// contetnt
if (TextUtils.isEmpty(post.summary) && !TextUtils.isEmpty(post.contentUrl)) {
DataRepository.getInstance().getPostContent(post.contentUrl, postContent);
}
else{
setText(postContent, post.summary);
}
.
.
.
}
}
(以及其他)的重载:
DataColumn
如果您想要查找日期列具有特定值的所有行,您可以使用foreach (DataRow row in workingupdates.storageTable.Rows)
{
DateTime dt = row.Field<DateTime>("columnname");
}
:
Linq-To-DataTable
现在您可以简单地枚举此查询:
var matchingDataRows = workingupdates.storageTable.AsEnumerable()
.Where(row => row.Field<DateTime>("columnname") == dateTimeVariable);
或创建像
这样的集合foreach (DataRow row in matchingDataRows)
{
// ...
}
DataRow[]
或matchingDataRows.ToArray()
List<DataRow>
matchingDataRows.ToList()
DataTable
请注意,您必须将matchingDataRows.CopyToDataTable()
添加到文件的顶部。