我有以下课程:
public class fixFirstDuplicate
{
public string firstParam { get; set; }
public string secondParam { get; set; }
}
和列表:
public static List<fixFirstDuplicate> firstDuplicate = new List<fixFirstDuplicate>();
列表中充满了firstParam和secondParam的值,每个值彼此对应。它基本上是一个表,其中第一个firstParam与第一个secondParam相关联,依此类推。
然后我有:
List<string> conLines = new List<string>();
我想查看conLines,每次字符串包含firstParam和secondParam时,对该字符串执行一个方法。
如果我只使用一个列表执行此操作,比如firstParam,我会使用HashSet,但我不知道如何执行相同的操作,因为我有firstParam和secondParam
答案 0 :(得分:1)
您需要检查conLines
是否同时包含firstParam
或secondParam
:
var query = firstDuplicate.Where(r => conLines.Contains(r.firstParam) &&
conLines.Contains(r.secondParam));
编辑:如果您想在找到匹配项时调用方法并且订单对您很重要,那么您可以使用简单的foreach
循环,如:
foreach (var item in firstDuplicate)
{
string matchingString = conLines.FirstOrDefault(r =>
(r.IndexOf(item.firstParam)>= 0 &&
r.IndexOf(item.secondParam) >= 0) &&
(r.IndexOf(item.firstParam) <
r.IndexOf(item.secondParam)));
if(matchingString != null)
{
//CallYourMethod(matchingString);
}
}
答案 1 :(得分:1)
此代码:
firstDuplicate
列表中包含与输入字符串匹配的参数的所有条目foundDuplicates
你必须要照顾:
conLines
var foundDuplicates = new List<fixFirstDuplicate>();
foreach (var combinationToFind in conLines)
{
// "They will be separated by at least one space."
var parameters = combinationToFind.Split(new[] { ' ' },
StringSplitOptions.RemoveEmptyEntries);
var duplicatesForCombination = firstDuplicate.Where(d =>
d.firstParam == parameters[0]
&& d.secondParam == parameters[1]);
foundDuplicates.AddRange(duplicatesForCombination);
}
现在,您可以为foundDuplicates
中的每个条目调用您的方法。