使用Linq的Where子句-搜索对象列表

时间:2018-10-30 19:50:02

标签: c# linq

一位医生可以在一家医院工作。

Doctor表如下:

RewriteEngine on
Redirect 301 /abc domain2.com/crazylongurl

Id Name Speciality HospitalName 是一个字符串。

医院表包含以下内容

HospitalName

现在,我有一个Id HospName Address 对象的列表。我需要使用Hospital对其进行过滤的地方。我需要从List of Doctor表中进行搜索,其中Doctors等于Hospital表中的HospitalName

代码:

HospName

我收到一条错误消息,指出:

  

无法将表格字符串转换为医院`

我该如何解决?

3 个答案:

答案 0 :(得分:1)

您可以像下面一样使用Any()listHospitals的类型为List<Hospital>,因此您必须查询该列表以比较医院名称。

List<Hospital> hos = listHospitals;
 var doctors = docList
.Where(h=> listHospitals.Any(x => x.HospitalName == h.HospitalName)).ToList();

答案 1 :(得分:0)

尝试一下...

var list = docList.Where(d => listHospitals.FirstOrDefault(h => d.HospitalName == h.HospName) != null).ToList();

答案 2 :(得分:-3)

我会说使用Count()而不是Any(),因为列表具有.Length.Count属性,因此不需要通过GetEnumerator()/MoveNext()/Dispose() Any()要求的顺序。

产生以下代码:

List<Hospital> hos = listHospitals;
var doctors = docList
                 .Where(h=> hos.Count(x => x.HospitalName == h.HospitalName) > 0).ToList();