سؤال

ولدي الحاجة إلى استبدال سلاسل متعددة مع الآخرين في استعلام

from p in dx.Table
where p.Field.Replace("A", "a").Replace("B", "b").ToLower() = SomeVar
select p

والذي ينص بيان SQL واحد لطيف مع أوامر SQL ذات الصلة استبدال ().

وكل خير:)

ولست بحاجة للقيام بذلك في عدد قليل من الاستفسارات حول تطبيق ... لذلك أنا أبحث عن بعض المساعدة في هذا الصدد؛ التي ستعمل على النحو الوارد أعلاه كما ضرب SQL واحد / الأوامر على الملقم

ويبدو من ونظروا حولهم لا أستطيع استخدام التعابير المنطقية لعدم وجود مكافئ SQL

ويجري مبتدئ LINQ هل هناك طريقة لطيفة بالنسبة لي أن أفعل هذا؟

وعلى سبيل المثال هل من الممكن أن يحصل على أنها "نتيجة فار" IQueryable القول وتمرير ذلك إلى وظيفة لإضافة اللازمة .Replace () الصورة وتمرير مرة أخرى؟ هل يمكنني الحصول على مثال سريع لكيفية إذا كان الأمر كذلك؟

وتحرير: يبدو أن هذا العمل! أنها لا تبدو مثل ذلك سيكون مشكلة؟

var data = from p in dx.Videos select p;
data = AddReplacements(data, checkMediaItem);
theitem = data.FirstOrDefault();

...

public IQueryable<Video> AddReplacements(IQueryable<Video> DataSet, string checkMediaItem)
{
    return DataSet.Where(p =>
            p.Title.Replace(" ", "-").Replace("&", "-").Replace("?", "-") == checkMediaItem);
}
هل كانت مفيدة؟

المحلول

ولن يكون أكثر performant لللعكس ما تحاول القيام به هنا، أي تهيئة السلسلة التي يتم التحقق ضد بدلا من إعادة تهيئة البيانات في قاعدة البيانات؟

public IQueryable<Video> AddReplacements(IQueryable<Video> DataSet, string checkMediaItem)
{
    var str = checkMediaItem.Replace("-", "?").Replace("&", "-").Replace("-", " "));
    return DataSet.Where(p => p.Title == str);
}

وهكذا كنت مقارنة الآن حقل في قاعدة البيانات مع القيمة المحددة، بدلا من مسح الطاولة وتحويل البيانات في كل صف ومقارنة ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top