我想檢查第一個陣列是否與第二個陣列項匹配,第二個陣列有我想與第一個陣列匹配的文本。
這是我正在使用的代碼:
public static void Main()
{
List<string> FirstArrayToLookup = new List<string>();
List<string> SecondArrayToLookup = new List<string>();
List<string> ThirdArrayToLookup = new List<string>();
FirstArrayToLookup.Add("FirstArray1");
FirstArrayToLookup.Add("FirstArray2");
SecondArrayToLookup.Add("SecondArray1");
ThirdArrayToLookup.Add("ThirdArray1");
ThirdArrayToLookup.Add("ThirdArray2");
ThirdArrayToLookup.Add("ThirdArray3");
string[] FirstStringContains = { "Array1", "Array2" };
string[] SecondStringContains = { "Array1" };
string[] ThirdStringContains = { "Array1", "Array2", "Array3" };
if (FirstArrayToLookup.All(x => FirstStringContains.All(y => x.Contains(y))))
Console.WriteLine("First Array to Lookup");
if (SecondArrayToLookup.All(x => SecondStringContains.All(y => x.Contains(y))))
Console.WriteLine("Second Array to Lookup");
if (ThirdArrayToLookup.All(x => ThirdStringContains.All(y => x.Contains(y))))
Console.WriteLine("Third Array to Lookup");
}
上面的代碼只會 return Second Array to Lookup,我想要實作的是如果FirstArrayToLookup變數與變數匹配FirstStringContains,那么它應該 return First Array to Lookup,其他條件也一樣。但是,只Second Array to Lookup回傳 ,而不回傳First Array to Lookupand Third Array to Lookup。FirstArrayToLookup必須匹配,FirstStringContains其他也一樣。
.Net 小提琴:https ://dotnetfiddle.net/rhTMuz
任何人都知道如何解決這個問題?
謝謝
uj5u.com熱心網友回復:
第一個版本
雖然您的要求:
當 ArrayToLookup 包含 Web Junior Developer 和 Software Junior Developer 的所有文本時,它應該回傳 JuniorPosition
當 ArrayToLookup 包含 Web Senior Developer 和 Software Senior Developer 的所有文本時
你需要使用.All(). 當.Any()滿足任何條件時,它會回傳 true。
當.All()所有條件都滿足時回傳true。
if (ArrayToLookup.All(x => JuniorJobPosition.Contains(x)))
JobPositionText = JobPosition.JuniorPosition.ToString();
else if (ArrayToLookup.All(x => SeniorJobPosition.Contains(x)))
JobPositionText = JobPosition.SeniorPosition.ToString();
else
JobPositionText = JobPosition.OtherPosition.ToString();
要么
if (ArrayToLookup.All(x => JuniorJobPosition.Contains(x)))
JobPositionText = JobPosition.JuniorPosition.ToString();
if (ArrayToLookup.All(x => SeniorJobPosition.Contains(x)))
JobPositionText = JobPosition.SeniorPosition.ToString();
if (JobPositionText == JobPosition.None.ToString())
JobPositionText = JobPosition.OtherPosition.ToString();
示例程式(第 1 版)
第二版
您需要檢查文本(在第二個陣列中)是否由ArrayLookup. 任何一個滿足結果都將回傳true。
if (ArrayToLookup.Any(x => JuniorJobPosition.Any(y => x.Contains(y))))
JobPositionText = JobPosition.JuniorPosition.ToString();
if (ArrayToLookup.Any(x => SeniorJobPosition.Any(y => x.Contains(y))))
JobPositionText = JobPosition.SeniorPosition.ToString();
示例程式(第二版)
uj5u.com熱心網友回復:
將您的條件重構為
if (ArrayToLookup.Any(x => JuniorJobPosition.Contains(x)))
{
JobPositionText = JobPosition.JuniorPosition.ToString();
}
else if (ArrayToLookup.Any(x => SeniorJobPosition.Contains(x)))
{
JobPositionText = JobPosition.SeniorPosition.ToString();
}
else
{
JobPositionText = JobPosition.OtherPosition.ToString();
}
或者你可以檢查
if (ArrayToLookup.Intersect (JuniorJobPosition). Any())
{
JobPositionText = JobPosition.JuniorPosition.ToString();
}
else if (ArrayToLookup.Intersect (SeniorJobPosition). Any())
{
JobPositionText = JobPosition.SeniorPosition.ToString();
}
else
{
JobPositionText = JobPosition.OtherPosition.ToString();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454020.html
上一篇:按布爾分組會產生錯誤的結果
