我正在尝试将2个集合与字符串列表进行比较。 第一个带有字符串列表的对象:
a0,b0,c0
a1,b1,c0
a1,b2,c0
a1,b2,c1
第二
a0,b0,c0
a1,b2,c0
我有方法从对象中获取字符串列表
public List<string> GetPlainRow(int index)
{
if(index >= _countRows || index < 0)
{
throw new IndexOutOfRangeException();
}
List<string> returnedRow = new List<string>();
foreach (KeyValuePair<string, List<string>> entry in _dataRows)
{
returnedRow.Add(entry.Value[index]);
}
return returnedRow;
}
试图将对象列表与以下内容进行比较:
for (int i = 0; i < dataCollection.CountRows; i++)
{
var newRow = table.NewRow();
for (var j = 0; j < dataCollection.GetPlainRow(i).Count; j++)
{
newRow[j] = dataCollection.GetPlainRow(i)[j];
}
for (int k = 0; k < dataCollection.CountRows; k++)
{
for (int l = 0; l < dataRestrained.CountRows; l++)
{
if(dataCollection.GetPlainRow(k).SequenceEqual(dataRestrained.GetPlainRow(l)))
{
found = true;
}
}
}
newRow[dataCollection.CountRows - 2] = found;
found = false;
table.Rows.Add(newRow);
}
但是似乎每次它返回true时,但是当我使用Equals而不是SequenceEqual时,它返回false。
答案 0 :(得分:0)
为了简单起见,我为结果添加了一个类:
internal class Result
{
public List<string> List { get; set; }
public bool IsExisted { get; set; }
}
然后我做了一个EqualityComparer ....
internal class ListOfStringEqualityComparer : IEqualityComparer<List<string>>
{
public bool Equals(List<string> b1, List<string> b2)
{
if (b1.Count != b2.Count) return false;
for (int i = 0; i < b1.Count; i++)
{
if (b1[i] != b2[i]) return false;
}
return true;
}
public int GetHashCode(List<string> b2)
{
int hCode = 0;
for (int i = 0; i < b2.Count; i++)
{
hCode = EqualityComparer<string>.Default.GetHashCode(b2[i]);
}
return hCode.GetHashCode();
}
}
现在您可以尝试以下方法:
ListOfStringEqualityComparer listOfStringEqualityComparer= new ListOfStringEqualityComparer();
var q = (from c in bigList
select new Result() { List = new List<string>(c), IsExisted = smallList.Contains(c, listOfStringEqualityComparer) });
如果有帮助,请让我...
答案 1 :(得分:0)
也许是这样
Import requests as r
apiToken = 'my token'
data center = 'co1'
url = 'https://{0}.qualtrics.com/API/v3/surveys'.format(data center)
headers = {'x-api-token':apiToken}
response = r.get(url, headers = headers)
print(response.status_code)