我有一个列表,我从一个只有一列的DataTabe创建。比方说这个专栏叫做MyColumn。列表中的每个元素都是包含我的列的对象数组,在这种情况下,只有一个(MyColumn)。最优雅的方法来检查该对象数组是否包含特定值?从列表中查找<DataRow>?
回答
var searchValue = SOME_VALUE;
var result = list.Where(row => row["MyColumn"].Equals(searchValue)); // returns collection of DataRows containing needed value
var resultBool = list.Any(row => row["MyColumn"].Equals(searchValue)); // checks, if any DataRows containing needed value exists
http://dotnetperls.com/list-find-methods有一些关于存在&找到。
嗯,这要看是什么版本的C#和.NET你是,3.5你可以使用LINQ做到这一点:
var qualiyfyingRows =
from row in rows
where Equals(row["MyColumn"], value)
select row;
// We can see if we found any at all through.
bool valueFound = qualifyingRows.FirstOrDefault() != null;
这将使匹配你两排和一个布尔它告诉你是否找到任何东西。
但是,如果你没有LINQ或随之而来的扩展方法,你将不得不寻找列表中的“旧派”:
DataRow matchingRow = null;
foreach (DataRow row in rows)
{
if (Equals(row["MyColumn"], value))
{
matchingRow = row;
break;
}
}
bool valueFound = matchingRow != null;
,这将给你一个匹配的第一行,它显然可以被改变来找到所有匹配的行,这将使得两个例子或多或少相等。
虽然LINQ版本有一个主要的区别,但是从它获得的IEnumerable被延迟,所以只有在实际枚举它的成员之前,计算才会完成。我对DataRow或应用程序知之甚少,不知道这是否是一个问题,但这是我处理NHibernate的代码中的一个问题。基本上我列举了哪些成员不再有效的顺序。
您可以通过C#2.0及更高版本中的iterators轻松创建自己的延期IEnumerables。
如果您经常进行此搜索,我认为每次写LINQ-expression都不方便。我会写扩展,方法是这样的:
private static bool ContainsValue(this List<DataRow> list, object value)
{
return list.Any(dataRow => dataRow["MyColumn"].Equals(value));
}
,以及使搜索后:
if (list.ContainsValue("Value"))
我可能误解这一点,但它似乎像数据目前处于List<object[]>
而不是在数据表因此要获得符合特定条件,你可以做这样的事情的项目:
var matched = items.Where(objArray => objArray.Contains(value));
项目将是你的对象[]的列表:S和匹配的将是一个IEnumerable []>与对象[]:小号与值
不,它在列表
- 1. 查找从列表
- 2. 从列表<int>使用linq查找排列
- 3. Angularfire从查找列表
- 4. 从多列中查找列
- 5. 从列表中查找编号
- 6. 从通用列表中查找项目
- 7. 从查找表中替换列
- 8. Grep/Awk:从列表中查找状态
- 9. 从链接列表中查找powerset
- 10. 查找列表
- 11. 查找列表
- 12. 查找列表
- 13. 查找列表
- 14. 查找列表
- 15. 查找列表
- 16. 查找列表
- 17. 查找列表
- 18. 查找列表
- 19. 查找列表
- 20. 查找列表
- 21. 查找列表
- 22. 查找列表中的子列表
- 23. 在列表python中查找列表
- 24. 从列表<>
- 25. 查找列表中唯一条目<Object[]>
- 26. 在绑定列表中查找<T>
- 27. 列表<T>。在Metro应用程序中查找方法
- 28. 在列表中查找最低费率<T>
- 29. C#自定义类的List <>查找并在列表中
- 30. 查找特定字段值在列表中的BsonDocuments <ValueType>?
事情是,该列表包含我需要搜索的数组...我想我不必搜索列表,但列表中的数组(s)。 – grady 2010-06-15 08:37:13