运算符'=='不能应用于类型'TValue'和'TValue'的操作数

我需要使用Linq方法在不使用循环的情况下使用tvalue列表查找特定项目的索引。我试图通过将单个tvalue与IEnumerable tvalue集合进行比较来找到索引,如下面的代码

05/07/2020=(material:96113 date:05/07/2020 quantity:9),05/06/2020=(material:96112 date:05/06/2020 quantity:13)}

有了这个,我得到了以下错误

CS0019运算符'=='不能应用于类型'tvalue'和'tvalue'的操作数

我也尝试使用此代码使用Equals,但是也不会返回确切的索引值。

 int idx= list.Select((elem,index) => new { elem,index }).First(p => p.elem == item).index;

在这里,列表是包含5个项目的tvalue的集合,而item是具有单个项目的tvalue,其索引将在列表中找到。在下图中找到结构

运算符'=='不能应用于类型'TValue'和'TValue'的操作数

请提出一种通过比较两个tvalue查找索引的方法

此致

Kererthana。

iCMS 回答:运算符'=='不能应用于类型'TValue'和'TValue'的操作数

您可以尝试以下代码

int idx = list.Select(((elem,index)=> new {elem,index})。First(p => EqualityComparer.Default.Equals(p.elem item).index

,

并非所有内容都可以直接比较。例如

var item1 = new KeyValuePair<int,string>(1,"text");
var item2 = new KeyValuePair<int,"text");

var theSame = (item1 == item2);

会给出错误

CS0019 Operator '==' cannot be applied to operands of type 'KeyValuePair<int,string>' and 'KeyValuePair<int,string>'

因此,如果您不能将一个TValue与另一个TValue进行比较,则可能需要分别比较每个元素,即

 int idx= list.Select((elem,index) => new { elem,index })
         .First(p => p.elem.Id == item.Id && p.elem.Text == item.Text).index;
本文链接:https://www.f2er.com/2037783.html

大家都在问