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の行を返します。
私は、それぞれのプロパティに一致する匿名タイプで動作するはずです。もっと奇妙なのは、distinctが実際に何かをしていることです。それは、FamilyCode(そしてProductPrefixなど)によってアルファベット順に値を並べ替えます。
なぜこれが機能しないのか考えている人はいますか?ここで おかげ
がLinqPadのSQL]タブに表示されているものです:あなたはDistinct()
を使用する場合
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がサーバーに送信されているのかを確認しましたか?それはデバッグに役立つかもしれません。 –
はい、私は試しましたが、結果は本当に有用ではありません。私は私の質問を編集して、SQLタブにあるものを表示しました。 – Gimly