我有一个linq查询奇怪的问题。我使用LINQPad 4做一些使用LinqToSQL作为LinqPad驱动程序的正则表达式的查询。Linq独特的不正确工作
下面是我试图使查询:
(from match in
from s in SystemErrors
select Regex.Match(s.Description, "...")
select new
{
FamilyCode = match.Groups["FamilyCode"].Value,
ProductPrefix = match.Groups["ProductPrefix"].Value,
BillingGroup = match.Groups["BillingGroup"].Value,
Debtor = match.Groups["Debtor"].Value
}).Distinct()
正如你可以看到我试图从使用组在日志表中的文本说明中提取数据。查询有效,但Distinct不想工作,它会为所有Match返回一行。
我已经阅读了不同的应该与匿名类型,匹配每个属性。更奇怪的是,不同的确会做某些事情,它按FamilyCode(然后是ProductPrefix等)按字母顺序排列值。
有人想到为什么这不起作用吗? 感谢
这里是显示在LinqPad的SQL标签:
DECLARE @p0 NVarChar(1000) = 'Big Regexp'
DECLARE @p1 NVarChar(1000) = 'FamilyCode'
DECLARE @p2 NVarChar(1000) = 'ProductPrefix'
DECLARE @p3 NVarChar(1000) = 'BillingGroup'
DECLARE @p4 NVarChar(1000) = 'Debtor'
SELECT DISTINCT [t2].[Description] AS [input], [t2].[value], [t2].[value2], [t2].[value3], [t2].[value4], [t2].[value5]
FROM (
SELECT [t1].[Description], [t1].[value], @p1 AS [value2], @p2 AS [value3], @p3 AS [value4], @p4 AS [value5]
FROM (
SELECT [t0].[Description], @p0 AS [value]
FROM [SystemError] AS [t0]
) AS [t1]
) AS [t2]
你是否看过Sql选项卡以确切地查看SQL发送到服务器的内容?这可能有助于调试。 – 2010-12-14 16:43:18
是的,我试过了,但结果并不是很有用。我编辑了我的问题以显示SQL选项卡中的内容。 – Gimly 2010-12-14 16:57:11