在C#(EF Core+Linq)中如何用字符串列表匹配数据库字段
解决方案
直接使用LINQ的Contains方法就能实现需求,EF Core会自动将这个操作转换为SQL的IN子句,写法简洁且能保证查询效率。
正确代码示例
List<string> ImageFormats = new List<string> { "png", "jpg", "jpeg", "tiff", "gif" }; var results = _database.Documents .Where(d => ImageFormats.Contains(d.Extension)) .ToList();
额外注意事项
大小写匹配问题:如果数据库中
Extension字段的存储大小写不固定(比如同时存在PNG和png),可以统一转换为小写后再匹配:var results = _database.Documents .Where(d => ImageFormats.Contains(d.Extension.ToLowerInvariant())) .ToList();也可以提前确保
ImageFormats列表的内容和数据库存储的大小写完全一致。空值处理:如果
Extension字段可能存在null值,且你不需要匹配这类数据,可以额外添加空值判断:var results = _database.Documents .Where(d => d.Extension != null && ImageFormats.Contains(d.Extension)) .ToList();
内容的提问来源于stack exchange,提问作者codeninja
相关产品推荐
相关产品推荐

