我有一张公司的桌子
For the following urls,
http://localhost:3000/cat/cat1 redirect to
http://localhost:3000/cat/cat4
http://localhost:3000/cat/cat2 redirect to
http://localhost:3000/cat/cat5
http://localhost:3000/cat/cat3 redirect to
http://localhost:3000/cat/cat6
然后有一个具有以下结构的对象列表(将其命名为该列表数据集)
CompanyId
CountryId
and so on...
我想做的就是获取上述数据集中存在的所有公司, 所以我想写这样的查询:
Id
CountryId
CurrencyId
TotalCost
and so on...
但这给我一个错误,
运算符'=='不能应用于类型为int和List的操作数
如何摆脱这个错误?
答案 0 :(得分:1)
IEnumerable<Company> companies = db.Companies.Where(a=> dataset.Select(b=>b.CompanyId).Contains(a.CompanyId)).ToList()
尝试此操作,您尝试在单个int变量上使用int ==的列表。
答案 1 :(得分:1)
List<int> companyIds = dataset.Select(a=>a.CompanyId).ToList();
IEnumerable<Company> companies = db.Companies.Where(a=> companyIds.Contains(a.CompanyId));
您可以预先计算要搜索的公司ID,然后使用Contains
的{{1}}方法来匹配公司ID。
答案 2 :(得分:0)
dataset.Select(a=>a.CompanyId)
返回一个List
,因此您无法将简单的CompanyId
类型int
与此List
进行比较
您必须检查CompanyId
方法是否允许对象Contains
进入此列表
var companies = db.Companies.Where(a=> dataset.Select(a=>a.CompanyId).Contains(a.CompanyId))
答案 3 :(得分:0)
您可以像这样使用Contains()
:
var companies = new List<(int companyid, int countryid, string companyName)>()
{
(1, 2, "One Incorporated"),
(2, 5, "Two-two Ltd"),
(3, 24, "Mr-Three Ltd")
};
var other = new List<(int companyid, string stuff)>()
{
(1, "asdad"),
(2, "asdadv")
};
var inOther = companies.Where(x => other.Select(y => y.companyid).Contains(x.companyid));
这将输出“一股份有限公司”和“两二有限公司”。
other.Select(y => y.companyid)获取ID列表,然后Contains()检查x是否存在(x是where语句中的公司)。