尝试"其中"在强类型列表上,错误CS0103

时间:2018-03-27 01:32:26

标签: c# linq join

我已经通过id连接两个列表的linq并返回强类型列表:

   List<TestowaKlasaDlaLinq> linqlambda = ListDetailedData.Join(PlacesList, a => a.place.id, b => b.id, (a, b) =>
                new TestowaKlasaDlaLinq()
                {
                    Czas = a.startDate.TimeOfDay.ToString(),
                    Co = a.name,
                    Miasto = b.address.city,
                    Miejsce = a.organizer.designation
                }).ToList();

现在一切正常。当我试图过滤该列表时出现问题,例如:

   var onlyGdansk = linqlambda.Where(x => x.Miasto.Equals("Gdańsk")).Select(x => x).ToList();

出现了这个错误: enter image description here

如何强烈输入强类型列表&#34; TestowaKlasaDlaLinq&#34;在那种情况下不存在吗?

2 个答案:

答案 0 :(得分:3)

我认为,其中一个x.Miasto值为null,这就是原因,它会显示此错误。

var onlyGdansk = linqlambda.Where(tkdl => tkdl.Miasto!=null && tkdl.Miasto.Equals("Gdańsk")).Select(dl => dl).ToList(); 

答案 1 :(得分:0)

Gauran Dave的答案变体:不要将Equals函数放在属性Miasto中的字符串上,因为该字符串可以为null,但将Equals函数放在字符串“Gdańsk”上。你可能断言“格但斯克”不是空的。

var onlyGdansk = linqlambda.Where(x => "Gdańsk".Equals(x)))
    .Select(x => x) // this one can be omitted
    .ToList();

或者考虑使用String.Equals(string, string),其中恕我直言的可读性更高一些:

var onlyGdansk = linqlambda.Where(x => String.Equals(x, "Gdańsk"))
    .Select(x => x) 
    .ToList()