我有一個列表,我從一個只有一列的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. 列表<dynamic>。查找和列表<dynamic>。查找全部
- 2. 查找從列表
- 3. 從列表<int>使用linq查找排列
- 4. 快速查找列表<T>
- 5. Angularfire從查找列表
- 6. 從內部查找最大值列表<T>
- 7. 從多列中查找列
- 8. 從通用列表中查找項目
- 9. 從查找表中替換列
- 10. 從鏈接列表中查找powerset
- 11. Grep/Awk:從列表中查找狀態
- 12. 從單詞列表中查找模式
- 13. 從Elixir的列表中查找索引
- 14. 從列表中查找編號
- 15. 從列表中蟒查找過零點
- 16. C#查找MongoDB中列表<string>中的字符串
- 17. 查找列表
- 18. 查找列表
- 19. 查找列表
- 20. 查找列表
- 21. 查找列表
- 22. 查找列表
- 23. 查找列表
- 24. 查找列表
- 25. 查找列表
- 26. 查找列表
- 27. 查找列表
- 28. 查找列表
- 29. 查找列表
- 30. 查找列表
事情是,該列表包含我需要搜索的數組...我想我不必搜索列表,但列表中的數組(s)。 – grady 2010-06-15 08:37:13