Ich weiß, SQL kann nicht für Schleife, aber ich muss wirklich diese Abfrage machen, kann aber keinen Weg finden. Ich habe folgenden Code in SQL zu machen.für die Ausführung der Schleife in SQL
List<MergerDic> allItems = (from row in dmVM
join t2 in mainDic on row.labelID equals t2.LabelId
where row.LanguageID == 20
orderby row.LabelValue
select new MergerDic
{
LabelId = row.labelID,
LabelKey = t2.LabelKey,
LanguageID = row.LanguageID,
LabelValue = t2.LabelValue,
LocalLabelValue = row.LabelValue
}).ToList();
foreach (var item in allItems)
{
if (string.IsNullOrEmpty(item.LocalLabelValue))
{
item.LabelValue = allItems.FirstOrDefault(x => x.LabelValue == item.LabelValue &&
!string.IsNullOrEmpty(x.LocalLabelValue)).LocalLabelValue;
db.saveChanges();
}
}
Ich habe versucht, eine temporäre Tabelle zu erstellen und dann ausgeführt, aber nicht funktioniert. Ich erhalte eine Fehlermeldung:
String or binary data would be truncated.
Die Abfrage, die ich nur zu schreiben versucht, so viel ist wie folgt:
DROP TABLE #Temp
CREATE TABLE #Temp
(
LabelId nvarchar(max),
LabelValue nvarchar(max),
LabelKey nvarchar(max),
LanguageID int,
LocalLabelValue nvarchar
)
INSERT INTO #Temp
SELECT
dl.LabelID, dl.LabelValue, LabelKey, 20, dx.LabelValue
FROM
DictionaryLocalized dx
JOIN
Dictionary dl ON dl.LabelID = dx.LabelID
WHERE
LanguageID = 20
ORDER BY
dl.LabelValue
WHILE @@FETCH_STATUS = 0
BEGIN
--Do something with Id here
PRINT 1
FETCH NEXT FROM #Temp
END
Haben Sie vergessen, '' MAX ''nach' LocalLabelValue' in Ihrer 'CREATE TABLE' Anweisung hinzuzufügen? – BJones
Nein, es wird einfach nicht benötigt –
Watch meine C# -Code .... Ich muss SQL Query machen, um dieses Stück zu ersetzen –