লিন্কে এমন কোনও পদ্ধতি আছে যেখানে আপনি "... কোথায় (a = 1) বা (a = 2)" এর মতো এসকিউএল স্ট্রিং তৈরি করতে ব্যবহার করতে পারেন?
উত্তর:
আপনি অবশ্যই এটি যেখানে ক্লজ (এক্সটেনশন পদ্ধতি) এর মধ্যে করতে পারেন। আপনার যদি একটি জটিল ক্যোয়ারী গতিশীলভাবে তৈরি করার প্রয়োজন হয় তবে আপনি প্রিডিকেটবিল্ডার ব্যবহার করতে পারেন ।
var query = collection.Where( c => c.A == 1 || c.B == 2 );
অথবা একটি প্রিডিকেটবিল্ডার ব্যবহার করে
var predicate = PredicateBuilder.False<Foo>();
predicate = predicate.Or( f => f.A == 1 );
if (allowB)
{
predicate = predicate.Or( f => f.B == 1 );
}
var query = collection.Where( predicate );
আপনি যেখানে আপনার একক ক্ষেত্রে স্ট্যান্ডার্ড .NET বুলিয়ান অপারেটর ব্যবহার করতে পারেন:
MyDataSource.Where(data => data.a == 'a' || data.a == 'b')
আপনার .Where()
কলটিতে স্ট্যান্ডার্ড বুলিয়ান 'বা' অপারেটর ব্যবহার করুন ||
।
var query = items.Where(item => (item == 1 || item == 2));
কল যেখানেই করা হয় তা আপনার যে কোনও কিছুর তুলনায় বুলিয়ান তুলনা, যাতে আপনি এটি নিজের ইচ্ছামত শর্তযুক্ত যুক্তি দিয়ে পূরণ করতে পারেন।
আপনি যদি প্যারামিটারের গণনাটি না জানেন তবে আপনি এটি ব্যবহার করতে পারেন:
নমুনা তথ্য
var parameters= new List<string>{"a","d"};
var sampledata = new Dictionary<string,string>();
sampledata["a"] = "A";
sampledata["b"] = "B";
sampledata["c"] = "C";
sampledata["d"] = "D";
কোড
var query = sampledata.AsQueryable();
var firstItemKey = sampledata.FirstOrDefault().Key;
var queryresult= sampledata.Where(x => x.Key == firstItemKey).AsQueryable();
foreach (var parameter in parameters.Skip(1))
{
queryresult=queryresult.Concat(query.Where(x => x.Key == parameter));
}
var result = queryresult.ToList();
এটি এখন নেট এ তৈরি করা হয়েছে, এটি আগে ছিল না তা নিশ্চিত নয়। একটি বিদ্যমান লিঙ্ক ক্যোয়ারী দেওয়া হয়েছে আপনি এমন একটি ক্লজ যুক্ত করতে পারেন যা স্ট্রিংগুলির একটি অ্যারে নেয় (সার্চস্ট্রিংস), এবং অনুসন্ধানের যে কোনও বস্তুর সাথে তার কোনওটি মিলছে কিনা তা পরীক্ষা করে দেখুন। ToLower () ব্যবহার করা সুনির্দিষ্ট করে যে আপনি এসকিউএল কোয়েরিতে কেস সংবেদনশীলতা এড়ান।
query.Where(i => SearchStrings.Any(s => i.ToLower().Contains(s.ToLower()));
আপনি সংগ্রহের বস্তুর সাথে অ্যারের সমস্ত শব্দ মিলে একটি 'এবং' প্রিকিকেটের জন্য একই জিনিস করতে পারেন।
query.Where(i => SearchStrings.All(s => i.ToLower().Contains(s.ToLower()));
এই উদাহরণে আমি একটি সংকলনের প্রতিটি বস্তুর সাথে সংযুক্তি করি এবং অনুসন্ধান স্ট্রিং অ্যারেতে প্রতিটি স্ট্রিংয়ের সাথে সংযোগ স্থাপন করি।
||
ডায়নামিক কিছু ব্যবহার করতে চান এবং চানa=a.where(hour=> hour<20); if(weekend) a=a.where(hour=> hour>6);
। আপনি আরও স্পষ্টভাবে বলতে চাইবেন ...