C# 检查列表中是否存在
我有这个模型课:C# 检查列表中是否存在,c#,asp.net-mvc,C#,Asp.net Mvc,我有这个模型课: public class usersInDashboard { public string Name { get; set; } public string fbID { get; set; } public string firstName { get; set; } public string lastName { get; set; } public int? countOfBid { get; set; } } 这是我的控制器
public class usersInDashboard
{
public string Name { get; set; }
public string fbID { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
public int? countOfBid { get; set; }
}
这是我的控制器
var参与者=以db.firstWeekBids为单位从q开始
其中q.biddetem==“笔记本电脑”
在db.Users中加入w
关于q.userId等于w.Id
选择新的{q.bidCount};
var模型=新列表();
foreach(参与者的var prt)
{
var userDash=new usersInDashboard();
userDash.fbID=user.id;
if(model.Contains((userDash.fbID))
{
...
}
其他的
{
userDash.fbID=user.id;
userDash.firstName=user.name;
userDash.countOfBid=prt.bidCount;
model.Add(userDash);
}
}
返回局部视图(模型);
我需要检查我的列表中是否存在此fbID。user.id是等于fbID的字符串。
我尝试了if(model.Contains((userDash.fbID))
但是它抛出了一个异常
错误1与的最佳重载方法匹配
'System.Collections.Generic.List.Contains(bla.Models.usersInDashboard)'
具有一些无效参数C:\Users\John\Documents\visual studio
2013\Projects\blabla\BlaBlaBla\Controllers\AuctionController.cs 67 21
如何执行此操作?方法如果未创建自定义的相等比较器,则通过使用默认的相等比较器确定序列是否包含指定的元素。如果要知道序列中是否存在具有指定数据的任何元素,请使用重载带谓词,而不是使用contains()
:
如果您仍然希望使用Contains
,那么您可以创建自己的比较器,或者您的模型应该实现。或者尝试@teovankot answer
但是,正如我所说的,如果要确定集合中的任何元素是否匹配某个条件,则必须使用any()
方法如果未创建自定义相等比较器,则通过使用默认相等比较器确定序列是否包含指定的元素。如果要知道序列中是否存在具有指定数据的任何元素,请使用带谓词的重载,而不是包含()
:
如果您仍然希望使用Contains
,那么您可以创建自己的比较器,或者您的模型应该实现。或者尝试@teovankot answer
但是,正如我所说的,如果要确定集合中的任何元素是否匹配某个条件,则必须使用
any()
@Farhad方法是最好的,但如果仍然要使用Contains
,则可以这样写:
model.Select(x => x.fbID).Contains(userDash.fbID)
@我认为法哈德方式是最好的,但如果您仍然想使用
Contains
,您可以这样写:
model.Select(x => x.fbID).Contains(userDash.fbID)
这是因为contains需要布尔参数。这是因为contains需要布尔参数。
model.Select(x => x.fbID).Contains(userDash.fbID)