C# - IQueryable 查询如何 select?
C# - IQueryable query how to select?
IQueryable<ImportNameValidation> query = entities.ImportNameValidation
.Where(y => y.FirstName == searchedName)
.Where(x => x.NameType == comboValue);
List<ImportNameValidation> ResultValues = query.ToList();
在这个查询中,我得到了 6 列,但我只需要其中的 3 列,我怎样才能使用 select 方法只得到我需要的那些列?
是不是像
.Select(t => t.FirstName, u => u.Name, i => i.NameCode);
我真正想要的 SQL 不是 "select *" 我想要 "select NameCode, Name, FirstName" 但我需要它作为 IQueryable。
对于 select 您需要投影到具有这些属性(匿名或自定义)的对象的特定列
.Select(t => new { t.FirstName, t.Name, t.NameCode })
此外,您可以将两个 where 条件放在同一个谓词中:
entities.ImportNameValidation
.Where(y => y.FirstName == searchedName && y.NameType == comboValue)
.Select(t => new { t.FirstName, t.Name, t.NameCode })
或在查询语法中:
from item in entities.ImportNameValidation
where item.FirstName == searchedName && item.NameType == comboValue
select new { item.FirstName, item.Name, item.NameCode }
由于集合中的项目不再属于 ImportNameValidation
类型,您无法将其分配给 List<ImportNameValidation>
。为此,投影到包含 3 个属性的自定义 DTO 对象(您不能投影到映射类型 - 会导致错误):
List<ImportNameValidationDTO> result = entities.ImportNameValidation
.Where(y => y.FirstName == searchedName && y.NameType == comboValue)
.Select(t => new ImportNameValidationDTO { t.FirstName, t.Name, t.NameCode })
.ToList();
简单使用匿名类型:
.Select(t => new { t.FirstName, t.Name, t.NameCode})
要将其转换为相同对象类型的列表,首先获取可枚举的数据。
List<ImportNameValidation> ResultValues = query.AsEnumerable().Select(t => new ImportNameValidation { t.FirstName, t.Name, t.NameCode }) ;
IQueryable<ImportNameValidation> query = entities.ImportNameValidation
.Where(y => y.FirstName == searchedName)
.Where(x => x.NameType == comboValue);
List<ImportNameValidation> ResultValues = query.ToList();
在这个查询中,我得到了 6 列,但我只需要其中的 3 列,我怎样才能使用 select 方法只得到我需要的那些列? 是不是像
.Select(t => t.FirstName, u => u.Name, i => i.NameCode);
我真正想要的 SQL 不是 "select *" 我想要 "select NameCode, Name, FirstName" 但我需要它作为 IQueryable。
对于 select 您需要投影到具有这些属性(匿名或自定义)的对象的特定列
.Select(t => new { t.FirstName, t.Name, t.NameCode })
此外,您可以将两个 where 条件放在同一个谓词中:
entities.ImportNameValidation
.Where(y => y.FirstName == searchedName && y.NameType == comboValue)
.Select(t => new { t.FirstName, t.Name, t.NameCode })
或在查询语法中:
from item in entities.ImportNameValidation
where item.FirstName == searchedName && item.NameType == comboValue
select new { item.FirstName, item.Name, item.NameCode }
由于集合中的项目不再属于 ImportNameValidation
类型,您无法将其分配给 List<ImportNameValidation>
。为此,投影到包含 3 个属性的自定义 DTO 对象(您不能投影到映射类型 - 会导致错误):
List<ImportNameValidationDTO> result = entities.ImportNameValidation
.Where(y => y.FirstName == searchedName && y.NameType == comboValue)
.Select(t => new ImportNameValidationDTO { t.FirstName, t.Name, t.NameCode })
.ToList();
简单使用匿名类型:
.Select(t => new { t.FirstName, t.Name, t.NameCode})
要将其转换为相同对象类型的列表,首先获取可枚举的数据。
List<ImportNameValidation> ResultValues = query.AsEnumerable().Select(t => new ImportNameValidation { t.FirstName, t.Name, t.NameCode }) ;