创建新对象时,我无法从LINQ列表访问当前位置
我尝试声明一个变量并将其在新对象内递增,但没有结果。我没有其他想法。在linq表达式中搜索了一段时间,但找不到答案
-- Sample Data
DeclARE @t TABLE (CustomerName VARCHAR(30))
INSERT @t VALUES('Johny Smith'),('Freddie Roach'),('Mr. Smithers'),('Johnathan Smithe');
-- User Arguments
DeclARE
@name VARCHAR(30) = 'John Smith',@partialmatch BIT = 1;
-- Dynamic Solution
SELECT
t.CustomerName,Fnmatch = SIGN(pos.F),Lnmatch = SIGN(pos.L)
FROM @t AS t
CROSS JOIN
(
SELECT SUBSTRING(@name,1,f.Mid-1),SUBSTRING(@name,f.Mid+1,8000)
FROM (VALUES(CHARINDEX(' ',@name))) AS f(Mid)
) AS f(FName,LName)
CROSS APPLY (VALUES (CHARINDEX(f.FName,t.CustomerName),CHARINDEX(f.LName,t.CustomerName))) AS pos(F,L)
WHERE (@partialmatch = 0 AND pos.F*pos.L > 0)
OR (@partialmatch = 1 AND pos.F+pos.L > 0);
在“索引位置”中,我需要当前对象的位置。
在此先感谢您的帮助。