定位DataRow中的特定列

时间:2015-09-09 13:28:45

标签: c# datatable

我试图执行与prepareLayout相当的C#。我开始使用reloadData循环逐行遍历表,但是我忘记了无法通过cache.removeAll() 访问列。

我如何实现这一目标?我见过的大多数示例都是针对一个特定行,目的是将其值转换为字符串,但我的任务是将值Select * where [columnname] = [value]的所有条目移动到存档表中。

我可以继续使用以下代码吗?或者我是以错误的方式接近这个?

foreach

1 个答案:

答案 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()添加到文件的顶部。