【发布时间】:2014-12-27 08:34:55
【问题描述】:
我有一个 Dictionary[int,Ibooks],其中 Ibooks 是一个具有 bookname 的界面em> 和 author 作为属性。
我已经厌倦了使用 keyvaluepair 删除字典 item by value。
这是我的代码:
public override void remove()
{
Dictionary<int, Ibooks > books = new Dictionary<int, Ibooks>();
Console.WriteLine("Enter the value to be removed : ");
string value = Console.ReadLine();
//var item=books.First<kvp.Value == value >;
foreach (var item in books.Where(kvp => kvp.Value == value).ToDictionary()) //error line
{
books.Remove(item);
}
}
Ibook 界面:
interface Ibooks
{
string bookname { get; set; }
string author { get; set; }
}
但我收到了这个错误:
“运算符 == 不能应用于 Dictionary.Ibooks 和字符串的类型”
任何人都可以有一个想法来解决这个问题,或者有没有其他更好的方法来通过它的值来找到一个元素? ?
例如,
我的输入是 bookname="dbms" 它应该从字典中删除特定的书。
但我无法与特定值“书名”进行比较。由于该界面同时具有作者和书名作为属性。
【问题讨论】:
-
你如何比较一个字符串和一个接口,而不是你只需从接口中读取你想要比较的变量的值并检查是否相等
-
books.Where(kvp => kvp.Value == value)看起来很奇怪。可能你的意思是这样的books.Where(kvp => kvp.Value.bookname == value) -
接口中的值是字符串,所以我尝试过这样..但是我尝试将它的类型转换为接口它不起作用
-
@Sripremrookie 你能告诉我们你想比较的界面和价值,以便我们可以帮助你
-
我已经编辑了我的问题。查看界面和我尝试比较的值
标签: c# generics dictionary collections