CS0019错误:C#运算符'&&'无法用于string类型操作数及LINQ查询求助
解决CS0019错误并修正LINQ查询
首先,咱们先理清这个CS0019错误的根源:你在Select方法里误用了&&逻辑与运算符——&&只能用来判断布尔值的逻辑关系,但b.Longitude和b.Latitude都是string(或数值)类型,自然会触发“运算符无法应用于该类型操作数”的错误。
你的核心需求是获取Latitude和Longitude的值,原查询的问题在于用错了语法——&&不是用来提取多个字段的,这里给你几种针对性的修正方案:
方案1:返回匿名类型列表(最快捷的临时方案)
如果只是临时使用这两个字段,不需要额外定义类,直接用匿名类型投影即可:
var x = db.Home.Where(b => b.HomeID == id) .Select(b => new { b.Longitude, b.Latitude }) .ToList();
得到的x是匿名类型的列表,你可以通过item.Longitude、item.Latitude直接访问对应的值。
方案2:返回自定义DTO/实体类列表(适合复用场景)
如果需要在多个地方复用这个坐标数据,建议定义一个专门的类,比如:
public class Coordinate { // 类型根据你的实际数据调整,比如数值类型可改为double/decimal public string Longitude { get; set; } public string Latitude { get; set; } }
然后修改LINQ查询,将结果投影到这个自定义类:
var x = db.Home.Where(b => b.HomeID == id) .Select(b => new Coordinate { Longitude = b.Longitude, Latitude = b.Latitude }) .ToList();
此时x是List<Coordinate>,类型明确,方便后续业务逻辑复用。
额外补充:若只需单个字段的列表
如果分别需要所有符合条件的经度或纬度值,可以单独投影:
// 获取所有符合条件的经度列表 var longitudes = db.Home.Where(b => b.HomeID == id) .Select(b => b.Longitude) .ToList(); // 获取所有符合条件的纬度列表 var latitudes = db.Home.Where(b => b.HomeID == id) .Select(b => b.Latitude) .ToList();
内容的提问来源于stack exchange,提问作者coffe addict
相关产品推荐
相关产品推荐

