[英]How do I use LINQ Contains(string[]) instead of Contains(string)
[英]How do I use StingComparison.OrdinalIgnoreCase and Contains() to find substrings in datatables?
我試圖在數據表的某些列中查找特定的子字符串,並且我想忽略大小寫。 我正在嘗試使用 contains 和 StringCompare 來實現這一點,據我所知我做對了,但我得到了錯誤:
無法從用法推斷出方法“System.Linq.Enumerable.Contains(System.Collections.Generic.IEnumerable, TSource, System.Collections.Generic.IEqualityComparer)”的類型 arguments。 嘗試明確指定類型 arguments。
我已經嘗試了一些你可以在下面看到的東西,我正在爬這個網站的 rest 尋求任何幫助,但似乎沒有任何效果。 我是 c# 的新手,我們將不勝感激。
DataTable everything = this.Outputs.Results.GetTable();
DataTable trueMatches = new DataTable();
Plan.Variables.HoldCount = everything.Rows.Count;
Plan.Variables.LotFound = 0;
if (Plan.Variables.HoldCount > 0){
Plan.Variables.LotFound = 1;
everything.AcceptChanges();
//foreach (DataRow row in everything.Rows){
for (int i = 0; i < everything.Rows.Count - 1; i++){
//string hD = row["HOLD_BRIEF_DESCR"].ToString();
//string rD = row["RELEASE_BRIEF_DESCR"].ToString();
string hD = everything.Rows[i][20].ToString();
string rD = everything.Rows[i][23].ToString();
//something wrong with StingComparison.OrdinalIgnoreCase, code compiles if removed
if (hD.Contains("cube", StringComparison.OrdinalIgnoreCase) ||
hD.Contains("cubing", StringComparison.OrdinalIgnoreCase) ||
hD.Contains("cubed", StringComparison.OrdinalIgnoreCase) ||
rD.Contains("cube", StringComparison.OrdinalIgnoreCase) ||
rD.Contains("cubing", StringComparison.OrdinalIgnoreCase) ||
rD.Contains("cubed", StringComparison.OrdinalIgnoreCase)){
trueMatches.Rows.Add(row);
row.Delete();
}
}
everything.AcceptChanges();
trueMatches.AcceptChanges();
}
.net 不提供Contains
StringComparison
參數的 Contains。 作為快速解決方案,您可以使用IndexOf
hd.IndexOf("cube", StringComparison.OrdinalIgnoreCase) >= 0
或者
using System.Linq;
...
string[] words = new string[] {
"cube", "cubing", "cubed",
};
// note i < everything.Rows.Count - we should not subtract 1
for (int i = 0; i < everything.Rows.Count; ++i) {
if (words.Any(word => hD.IndexOf(word, StringComparison.OrdinalIgnoreCase)) ||
words.Any(word => rD.IndexOf(word, StringComparison.OrdinalIgnoreCase))) {
//TODO: what is row here? If it's everything.Rows[i] see the code below
trueMatches.Rows.Add(row);
row.Delete();
}
}
...
row
可能有問題,如果它是everything.Rows[i]
循環應該是
for (int i = 0; i < everything.Rows.Count;) {
if (words.Any(word => hD.IndexOf(word, StringComparison.OrdinalIgnoreCase)) ||
words.Any(word => rD.IndexOf(word, StringComparison.OrdinalIgnoreCase))) {
//TODO: what is row here? If it's everything.Rows[i] see the code below
var row = trueMatches.Rows[i];
row.Delete();
trueMatches.Rows.Add(row);
}
else
++i;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.