Как сопоставить размер ширины и высоты с выражением Regex и использовать сортировку по в SQL или C# для создания раскрывC#

Место общения программистов C#
Ответить
Anonymous
 Как сопоставить размер ширины и высоты с выражением Regex и использовать сортировку по в SQL или C# для создания раскрыв

Сообщение Anonymous »

У меня есть SQL-запрос, который возвращает следующую таблицу, но я хочу правильно упорядочить размер доски в порядке убывания (от маленького к большому) в раскрывающемся списке. Я использую C# для создания раскрывающегося списка из объекта.

Это то, что возвращает текущий SQL-запрос.

Изображение


DECLARE @StockID int = 680

DECLARE @VariationParent int = (SELECT TOP 1 StockParent_ParentId FROM
StockVariations SV INNER JOIN FinGoodsParent FGP ON FGP.Id =
SV.StockParent_ChildId WHERE StockParent_ChildId = @StockID AND SV.IsDeleted = 0
AND FGP.IsDeleted = 0 AND FGP.Publish = 1)

SELECT DISTINCT AV.ID, AV.AttrValue, AV.AttributeTypes_Id 'AttributeTypeID', CAST(CASE WHEN SA.StockParent_Id = @StockID THEN 1 ELSE 0 END as BIT) 'IsDefault'
FROM AttributeTypes AT
INNER JOIN AttributeValues AV ON AV.AttributeTypes_Id = AT.Id
INNER JOIN StockParent_AttributeValues SA on SA.AttributeValue_Id = AV.Id
INNER JOIN FinGoodsParent FGP ON FGP.Id = SA.StockParent_Id AND FGP.IsDeleted = 0 AND FGP.Publish = 1
WHERE SA.StockParent_Id IN (SELECT SV.StockParent_ChildId FROM StockVariations SV INNER JOIN FinGoodsParent FGP ON FGP.Id = SV.StockParent_ChildId AND FGP.IsDeleted = 0 AND FGP.Publish = 1 WHERE SV.StockParent_ParentId = @VariationParent AND SV.IsDeleted = 0)
AND SA.IsDeleted = 0 AND AT.IsDeleted = 0 AND AV.IsDeleted = 0
ORDER BY AV.AttrValue DESC


Я пытался использовать код JQuery, который работает, но он заменяет значение выбора выпадающего списка, что не позволяет моей функции Ajax получить правильную информацию.

Вот код JQuery, который работает, но я хочу либо сделать это в SQL, либо С#. Приведенный ниже код выполнит сопоставление регулярного выражения для всего, что содержит числа, выделит первое число и сравнит размер. Следует отметить, что иногда размеры в базе данных могут разделять значения знаком x вместо *.


1500*900
900*900
2400*600
600*600


$( document ).ready(function() {
$(".variation-picker").html($(".variation-picker option").val(function () {
return this.text.match(/\d+/);
}).sort(function (a, b) {
var a = parseInt(a.value, 10), b = parseInt(b.value, 10);
return a < b ? -1 : 1;
}));

$('.variation-picker').find('option[selected="selected"]').each(function () {
$(this).prop('selected', true);
});

});


Это код C#, который я использую для создания раскрывающихся списков выбора вариантов. Столбец AttrValue также может содержать такие значения, как цвет или метры, поэтому его не следует привязывать только к числовым значениям. Мне не очень хочется создавать отдельную таблицу с приоритетами заказов и т. д.

if (ProductDetails.ProductVariations?.Count > 0)
{
var html = new System.Text.StringBuilder();
var colCount = 0;

//Build the variations dropdowns

ProductDetails.ProductVariations.ForEach(p =>
{
if (colCount == 2)
{
colCount = 0;
html.AppendLine("");
html.AppendLine("");
}

html.AppendLine("");
html.AppendLine($"{p.Name}
");
html.AppendLine(" ");
p.ProdVariationValues.ForEach(v => html.AppendLine($"{v.AttrValue}"));
html.AppendLine("
");
html.AppendLine("");

colCount++;
});

ProductVarienceHTML = html.ToString();
}
else
{
ProductVarienceHTML = "";
}


Подробнее здесь: https://stackoverflow.com/questions/572 ... sort-by-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»