我可以用LINQ写这样的东西:
var selection = from person in personList let initials = person.FirstName[0] + person.LastName[0] select initials;
SELECT @Initials FROM [Person] SET @Initials = SUBSTRING (Person.FirstName,1,1) + SUBSTRING (Person.LastName,1)
可能不是,但也许有一个技巧?@H_502_5@
解决方法
一个干净的方法,而不添加一个临时表,循环等,将使用通用表表达式(CTE).例:
;WITH PersonsWithInitials AS ( SELECT SUBSTRING (COALESCE(Person.FirstName,''),1) + SUBSTRING (COALESCE(Person.LastName,1) AS Initials,FirstName,LastName,City FROM [Person] ) SELECT FirstName,City,Initials FROM PersonsWithInitials WHERE /* Complex WHERE clause goes here and it can reference Initials as if it were a field */
代替上面的“空”,你可以使用一段时间或其他东西来代替空名字段.@H_502_5@
所有这些都应该在.NET的单个sql调用中执行 – CTE不像视图,存储过程,临时表等保存在数据库中.@H_502_5@