আমার আজ একই সমস্যা ছিল এবং আমার সমাধানটি ইয়োদা তালিকাভুক্তের অনুরূপ, তবে এটি কেবল সাবলীল সিনট্যাক্সের সাথেই কাজ করে।
আমার কোডটিকে আপনার কোডের সাথে মানিয়ে নেওয়া: আমি নিম্নলিখিত স্ট্যাটিক পদ্ধতিটি অবজেক্ট শ্রেণিতে যুক্ত করেছি
/// <summary>
/// use this instead of a parameritized constructor when you need support
/// for LINQ to entities (fluent syntax only)
/// </summary>
/// <returns></returns>
public static Func<Naleznosci, Payments> Initializer()
{
return n => new Payments
{
Imie = n.Dziecko.Imie,
Nazwisko = n.Dziecko.Nazwisko,
Nazwa = n.Miesiace.Nazwa,
Kwota = n.Kwota,
NazwaRodzajuOplaty = n.RodzajeOplat.NazwaRodzajuOplaty,
NazwaTypuOplaty = n.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
DataRozliczenia = n.DataRozliczenia,
TerminPlatnosc = n.TerminPlatnosci
};
}
এবং তারপরে নীচে বেস ক্যোয়ারীটি আপডেট করেছে:
var naleznosci = (from nalTmp in db.Naleznosci
where nalTmp.idDziecko == idDziec
select new Payments.Initializer());
ক্লাস / ডেটা ট্রান্সফার অবজেক্টে সদস্য ইনিশিয়ালেশনের ব্লাটকে ধাক্কা দেওয়ার সুবিধা দিয়ে এটি যৌক্তিকভাবে জেমস ম্যানিংয়ের সমাধানের সমতুল্য
দ্রষ্টব্য: মূলত আমি আরও বর্ণনামূলক নামগুলি ব্যবহার করছিলাম যা "ইনিশিয়ালাইজার" তবে আমি কীভাবে এটি ব্যবহার করছিলাম তা পর্যালোচনা করার পরে আমি দেখতে পেলাম যে "ইনিশিলাইজার" যথেষ্ট ছিল (অন্তত আমার উদ্দেশ্যে) purposes
চূড়ান্ত দ্রষ্টব্য:
এই সমাধানটি নিয়ে আসার পরে আমি মূলত ভাবছিলাম যে একই কোডটি ভাগ করে নেওয়া এবং কোয়েরি সিনট্যাক্সের জন্য এটি কাজ করার জন্য এটি খাপ খাইয়ে নেওয়া সহজ। আমি আর বিশ্বাস করি না যে এটি হবে। আমি মনে করি যে আপনি যদি এই ধরণের শর্টহ্যান্ড নির্মাণ ব্যবহার করতে সক্ষম হতে চান তবে আপনার উপরে বর্ণিত প্রতিটি (ক্যোয়ারী, সাবলীল) অনর্গল জন্য একটি পদ্ধতি প্রয়োজন যা অবজেক্ট শ্রেণিতেই উপস্থিত থাকতে পারে।
প্রশ্নের সংশ্লেষের জন্য একটি এক্সটেনশন পদ্ধতি (বা বেস শ্রেণীর বাইরে কিছু পদ্ধতি ব্যবহৃত হচ্ছে) প্রয়োজন হবে। (যেহেতু ক্যোয়ারী বাক্য গঠনটি টি-র পরিবর্তে আইকুয়েরেবল পরিচালনা করতে চায়)
এখানে অবশেষে ক্যোয়ার সিনট্যাক্সের জন্য কাজ করতে আমি কী ব্যবহার করেছি তার একটি নমুনা এখানে। (ইয়োদা ইতিমধ্যে এটি পেরেক দিয়েছিল তবে আমি মনে করি ব্যবহারটি আরও পরিষ্কার হতে পারে কারণ আমি এটি প্রথমে পাইনি)
/// <summary>
/// use this instead of a parameritized constructor when you need support
/// for LINQ to entities (query syntax only)
/// </summary>
/// <returns></returns>
public static IQueryable<Payments> Initializer(this IQueryable<Naleznosci> source)
{
return source.Select(
n => new Payments
{
Imie = n.Dziecko.Imie,
Nazwisko = n.Dziecko.Nazwisko,
Nazwa = n.Miesiace.Nazwa,
Kwota = n.Kwota,
NazwaRodzajuOplaty = n.RodzajeOplat.NazwaRodzajuOplaty,
NazwaTypuOplaty = n.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
DataRozliczenia = n.DataRozliczenia,
TerminPlatnosc = n.TerminPlatnosci
};
}
এবং ব্যবহার
var naleznosci = (from nalTmp in db.Naleznosci
where nalTmp.idDziecko == idDziec
select nalTmp).Initializer().ToList();