কেবলমাত্র প্যারামিটারলেস কনস্ট্রাক্টর এবং ইনিশিয়ালাইজারগুলি লিনকু থেকে সত্তাগুলিতে সমর্থিত


132

এই লিনাক এক্সপ্রেশনটিতে আমার এই ত্রুটি রয়েছে:

var naleznosci = (from nalTmp in db.Naleznosci
                              where nalTmp.idDziecko == idDziec
                              select new Payments
                              (
                                  nalTmp.Dziecko.Imie,
                                  nalTmp.Dziecko.Nazwisko,
                                  nalTmp.Miesiace.Nazwa,
                                  nalTmp.Kwota,
                                  nalTmp.RodzajeOplat.NazwaRodzajuOplaty,
                                  nalTmp.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
                                  nalTmp.DataRozliczenia,
                                  nalTmp.TerminPlatnosci
                              )).ToList();

কোনও ধারণা কীভাবে এই সমস্যার সমাধান করবেন? আমি প্রকাশের যে কোনও সংমিশ্রণ দিয়ে চেষ্টা করি ...: /


1
আপনি কি পেমেন্টস ক্লাসটি দেখাতে পারবেন? বা কমপক্ষে কর্টরকে এখানে কল করা হচ্ছে এবং বিশেষত যে 8-প্যারাম কর্টর কলটি 0-প্যারাম কর্টর কলটির জন্য নিরাপদে সরিয়ে নেওয়া যাবে এবং অবজেক্টে 8 টি বৈশিষ্ট্য নির্ধারণ করা যাবে কিনা?
জেমস ম্যানিং

23
আমি "নতুনকরণ করা" বস্তুর জন্য ক্লাসের পরিবর্তে স্ট্রাক্ট ব্যবহার করার সময় আমি একই ত্রুটি পেয়েছি got
হকিআইট

3
টিএল; ডিআর জিনিসটি হ'ল ইএফ-লিনকুই নির্বাচনী বিবৃতিটি ইএফ সরবরাহকারীর কাছে প্রেরণের চেষ্টা করছে, অর্থাৎ। এটি এসকিউএল রূপান্তর করুন। ইএফ-লিনকিউ থেকে বেরিয়ে আসার জন্য, কোনও বস্তু তৈরির আগে টোললিস্ট () কল করুন।

উত্তর:


127

'পেমেন্টস' সম্পর্কিত আরও তথ্য ছাড়াই এগুলি খুব বেশি সহায়ক হয় না, তবে ধরে নেওয়া আপনি কোনও পেমেন্টস্ অবজেক্ট তৈরি করতে চান এবং কলাম মানগুলির উপর ভিত্তি করে এর কয়েকটি বৈশিষ্ট্য সেট করতে চান:

var naleznosci = (from nalTmp in db.Naleznosci
                              where nalTmp.idDziecko == idDziec
                              select new Payments
                              {
                                  Imie = nalTmp.Dziecko.Imie,
                                  Nazwisko = nalTmp.Dziecko.Nazwisko,
                                  Nazwa= nalTmp.Miesiace.Nazwa,
                                  Kwota = nalTmp.Kwota,
                                  NazwaRodzajuOplaty = nalTmp.RodzajeOplat.NazwaRodzajuOplaty,
                                  NazwaTypuOplaty = nalTmp.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
                                  DataRozliczenia = nalTmp.DataRozliczenia,
                                  TerminPlatnosci = nalTmp.TerminPlatnosci,
                              }).ToList();

10
এটি দুর্দান্ত কাজ করে, ক্লাসের জন্য একটি খালি কনস্ট্রাক্টর যুক্ত করতে ভুলবেন না।
লাইভ-

58
কেবল এই উত্তরে যুক্ত করতে, আপনি স্ট্রাক্টসের সাথে এটি করতে পারবেন না, কেবলমাত্র ক্লাস - আমাকে এটি নির্ধারণ করতে কিছুটা সময় নিয়েছে!
naspinski

4
হ্যাঁ, আমি মনে করি টোনির উত্তর এর চেয়ে উত্তম কারণ এটি প্রকৃতপক্ষে তাত্ক্ষণিক সমস্যাটি সমাধান করে, যদিও এইটি পেমেন্টস ক্লাসের প্রকৃতি পরিবর্তন করে এবং সম্ভবত এটি অপরিবর্তনীয় হওয়া থেকে রোধ করে সমস্যার সমাধান করে।
স্টিফেন হল্ট

এটি দেখতে কুৎসিত আফ। EF6 এর সাথে আরও ভাল উপায়?
টুলকিট

115

আপনি যদি এখনও আপনার নির্মাণকারীকে আরম্ভের জন্য এবং বৈশিষ্ট্যগুলির জন্য ব্যবহার করতে চান না (কখনও কখনও এই আচরণটি আরম্ভের উদ্দেশ্যে প্রয়োজন হয়), কল করে ToList()বা জিজ্ঞাসাটি দিয়ে উত্তর দিন ToArray()এবং তারপরে ব্যবহার করুন Select(…)। সুতরাং এটি সংগ্রহগুলিতে LINQ ব্যবহার করবে এবং পরামিতিগুলির সাথে কনস্ট্রাক্টরকে কল করতে না পারার সীমাবদ্ধতাটি Select(…)বিলুপ্ত হবে।

সুতরাং আপনার কোডটি এর মতো দেখতে হবে:

var naleznosci = db.Naleznosci
                          .Where(nalTmp => nalTmp.idDziecko == idDziec)
                          .ToList() // Here comes transfer to LINQ to Collections.
                          .Select(nalImp => new Payments
                              (
                                  nalTmp.Dziecko.Imie,
                                  nalTmp.Dziecko.Nazwisko,
                                  nalTmp.Miesiace.Nazwa,
                                  nalTmp.Kwota,
                                  nalTmp.RodzajeOplat.NazwaRodzajuOplaty,
                                  nalTmp.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
                                  nalTmp.DataRozliczenia,
                                  nalTmp.TerminPlatnosci
                              ))
                          .ToList();

21
এটি কেন কাজ করে তা কেবল স্পষ্ট করে বলতে গেলে, মূলত বর্ণিত কোডের সাথে সমস্যাটি হ'ল সত্তা ফ্রেমওয়ার্কটি অন্যান্য লিংক ক্যোয়ারির সাথে সাথে এসকিউএলে কনস্ট্রাক্টর কলটি পাস করার চেষ্টা করে, এবং অবশ্যই এসকিউএল নির্মাণের বিষয়ে কোনও উপায় নেই জটিল জিনিস! টোলিস্ট () কলটি সন্নিবেশ করিয়ে আপনি অগণিত-কার্যকর না হওয়া এসকিউএল কোয়েরি থেকে মেমরির অবজেক্টের একটি কংক্রিট তালিকায় আনুনীয়কে স্থানান্তরিত করেন, যা আপনি নিজের পছন্দ মতো কোনওভাবেই ম্যানিপুলেট করতে পারেন।
স্টিফেন হল্ট

19
ToX()এই জন্য ব্যবহার করবেন না , ব্যবহার করুন AsEnumerable()
রাউলিং

1
.ToList () // এখানে LINQ থেকে সংগ্রহগুলিতে স্থানান্তর আসে। আমার জন্য সমস্যাটি সমাধান করে এমন লাইন।
রাম

15
সচেতন থাকুন যে এটি ডিবি স্তরে সমস্ত কলাম নির্বাচন করবে যেখানে সাধারণত এটি কেবল প্রয়োজনীয় কলামগুলি নির্বাচন করবে
হিউ জেফনার

4
কেবল এটিই নয় আপনি সম্ভবত একাধিক গণনাও করতে চলেছেন। আমি এই সমাধান পছন্দ করি না।
ব্লুবারন

47

আমি নিজেই এই ত্রুটির মুখোমুখি হয়েছি, আমি ভেবেছিলাম আমি যুক্ত করব যে Paymentটাইপটি একটি হয় struct, আপনি একই ত্রুটির মুখোমুখি হবেন কারণ structপ্রকারগুলি প্যারামিটারলেস কনস্ট্রাক্টরকে সমর্থন করে না।

এই ইভেন্টে, Paymentকোনও শ্রেণিতে রূপান্তর করা এবং অবজেক্ট ইনিশিয়ালাইজার সিনট্যাক্স ব্যবহার করা সমস্যার সমাধান করবে।


এটি আমার গঠনের সমস্যাটি সমাধান করে। প্রকৃতপক্ষে স্ট্রাক্ট সিলেক্টরের এই ক্যোয়ারীটি লিনকিউ -২-এসকিউএল সমর্থিত এবং আপনি ইন্টিফ্রেমওয়ার্কে আপগ্রেড করার সময় এটি একটি সমস্যা।
টমাস কুবেস

আমি স্ট্রাক্টকে ঘৃণা করি। তারা যা চায় তা কখনই শেষ করে না
সাইমন_উইভার

DateTimeআমার কোয়েরির ভিতরে একটি (যা একটি কাঠামো) তৈরি করেছে , যার ফলে একই ত্রুটির ফলস্বরূপ। এটি স্থানীয় ভেরিয়েবলের সাথে নিষ্কাশন করা আমার জন্য এটি স্থির করে। স্ট্রাক্ট ইঙ্গিতটির জন্য ধন্যবাদ।
লাকিলিকি

20

আপনি যদি আমার মতো হন এবং আপনার তৈরি প্রতিটি ক্যোয়ারির জন্য আপনার সম্পত্তিগুলি রুপ করতে না চান তবে এই সমস্যাটি সমাধান করার আরও একটি উপায় আছে।

var query = from orderDetail in context.OrderDetails
            join order in context.Orders on order.OrderId equals orderDetail.orderId
            select new { order, orderDetail };

এই মুহুর্তে আপনার কাছে একটি আইকোয়্যারেবল রয়েছে যাতে একটি বেনামি অবজেক্ট থাকে। আপনি যদি কোনও কন্সট্রাক্টরের সাথে আপনার কাস্টম অবজেক্টকে পপুলেশন করতে চান তবে আপনি এই জাতীয় কিছু করতে পারেন:

return query.ToList().Select(r => new OrderDetails(r.order, r.orderDetail));

এখন আপনার কাস্টম অবজেক্ট (যা প্যারামিটার হিসাবে দুটি অবজেক্ট নেয়) আপনার বৈশিষ্ট্যগুলি প্রয়োজনীয় হিসাবে পপুলেশন করতে পারে।


এটি আমার পক্ষে কাজ করেছে এবং সবচেয়ে পরিষ্কার সমাধান হয়ে উঠেছে। যাঁরা কন্সট্রাক্টরকে মুছে ফেলার এবং ইনিশিয়ালাইজার সিনট্যাক্স ব্যবহার করার পরামর্শ দিয়েছেন তাদের অবশ্যই কনস্ট্রাক্টরের মধ্যে যুক্তি থাকতে হবে না। আমি কেবলমাত্র একবারেই কোনও জিনিসের জন্য বৈশিষ্ট্য স্থাপনের জন্য নির্মাতাদের উপর ঝুঁকছি। ভাগ করার জন্য আপনাকে ধন্যবাদ।
Bonez024

9

প্রথমে আমি সমাধানটি এড়িয়ে যাব

from ....
select new Payments
{
  Imie = nalTmp.Dziecko.Imie,
  ....
}

এটির জন্য একটি খালি নির্মাতার প্রয়োজন এবং এনক্যাপসুলেশনকে উপেক্ষা করে আপনি বলছেন যে নতুন অর্থ প্রদান () কোনও ডেটা ছাড়াই একটি বৈধ অর্থ প্রদান, তবে পরিবর্তে অবজেক্টটির অবশ্যই কমপক্ষে একটি মান এবং আপনার ডোমেনের উপর নির্ভর করে অন্যান্য প্রয়োজনীয় ক্ষেত্র থাকতে হবে।

প্রয়োজনীয় ক্ষেত্রগুলির জন্য কনস্ট্রাক্টর রাখা ভাল তবে কেবল প্রয়োজনীয় ডেটা আনুন:

from ....
select new
{
  Imie = nalTmp.Dziecko.Imie,
  Nazwisko = nalTmp.Dziecko.Nazwisko
  ....
}
.ToList() // Here comes transfer to LINQ to Collections.
.Select(nalImp => new Payments
 (
  nalTmp.Imie,//assume this is a required field
  ...........
  )
  {
     Nazwisko = nalTmp.Nazwisko //optional field
  })
.ToList();

এটি কম মন্দ।
চকী

আমিও এরকম কিছু পছন্দ করি। আমি টিপলটি ব্যবহার করার চেষ্টা করছিলাম কিন্তু টুপলের কম প্যারামিটার নেই less আমি একটি বেনামে অবজেক্ট তৈরি করেছি এবং তারপরে টুপল নির্বাচন করি।
Tchaps

এনক্যাপসুলেশন এবং ডোমেন আলিঙ্গন করার জন্য একটি আপ
inrandomwetrust

2

আপনি এটি করার চেষ্টা করতে পারেন তবে এক্সটেনশনের পদ্ধতিগুলি ব্যবহার করে। ডাটাবেস ব্যবহারের সরবরাহকারী কী?

var naleznosci = db.Naleznosci
                          .Where<TSource>(nalTmp => nalTmp.idDziecko == idDziec)
                          .Select<TSource, TResult>(
                             delegate(TSource nalTmp) { return new Payments
                             (
                                 nalTmp.Dziecko.Imie,
                                 nalTmp.Dziecko.Nazwisko,
                                 nalTmp.Miesiace.Nazwa,
                                 nalTmp.Kwota,
                                 nalTmp.RodzajeOplat.NazwaRodzajuOplaty,
                                 nalTmp.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
                                 nalTmp.DataRozliczenia,
                                 nalTmp.TerminPlatnosci
                             ); })
                          .ToList();

2

শুধু সামনে বিবৃতি .. প্রকৃত একটি ক্যোয়ারী হিসেবে সংরক্ষিত হয়, এটি এখনো পূর্ণ না। আপনি বস্তুর সাথে খেলছেন বলার পরে , এবং তারপরে আপনি কোয়েরিতে একটি অ-ডিফল্ট নির্মাতা ব্যবহার করতে পারেন।ToList()DbSetSelectDbSetToList()

ব্যবহারের সময় অনুসারে সবচেয়ে কার্যকর উপায় নয়, তবে এটি ছোট সেটগুলির একটি বিকল্প।


1

হ্যাঁ, এটি চেষ্টা করে দেখুন ...

var naleznosci = (from nalTmp in db.Naleznosci
                              where nalTmp.idDziecko == idDziec
                              select new Payments()
                              {
                                  Dziecko.Imie,
                                  Dziecko.Nazwisko,
                                  Miesiace.Nazwa,
                                  Kwota,
                                  RodzajeOplat.NazwaRodzajuOplaty,
                                  RodzajeOplat.TypyOplat.NazwaTypuOplaty,
                                  DataRozliczenia,
                                  TerminPlatnosci
                              }).ToList();

এটি প্যারামিটারলেস কনস্ট্রাক্টর ব্যবহার করে আপনার পেমেন্ট অবজেক্টটিকে নতুন করে তুলেছে এবং তারপরে কোঁকড়া ধনুর্বন্ধনীগুলির মধ্যে তালিকাভুক্ত বৈশিষ্ট্যগুলি আরম্ভ করবে { }


3
এফওয়াইআই ()পেমেন্টস এর দরকার নেই, তাই এটি হতে পারে
Pay

এখন আমার ত্রুটি রয়েছে: সংগ্রহের প্রারম্ভককরণকারীর সাথে 'পেমেন্টস' প্রকারটি আরম্ভ করতে পারে না কারণ এটি '
সিস্টেম.কলেশনগুলি

ডান - যদি আপনি কোন আনোন টাইপ তৈরি করে থাকেন (পেমেন্ট ক্লাসের উদাহরণের পরিবর্তে), সুনির্দিষ্ট কোডগুলি ঠিক আছে কারণ বৈশিষ্ট্যগুলি সেট করতে হবে সেই সম্পত্তিগুলির নাম স্পষ্টতই পড়া হবে। যেহেতু এটি একটি 'আসল' শ্রেণি, তবে আপনাকে বিভিন্ন মানগুলিতে কোন বৈশিষ্ট্য সেট করতে হবে তা নির্দিষ্ট করতে হবে।
জেমস ম্যানিং

1

পূর্বোক্ত পদ্ধতিগুলি ছাড়াও, আপনি এটিকে একটি গণনাযোগ্য সংগ্রহ হিসাবে পার্স করতে পারেন:

(from x in table
....
).AsEnumerable()
.Select(x => ...)

বেনামে কোনও বস্তু তৈরি করার সময় এটিকে জীবন সহজ করার অতিরিক্ত যুক্ত সুবিধাও রয়েছে:

 (from x in tableName
select x.obj)
.Where(x => x.id != null)
.AsEnumerable()
.Select(x => new {
   objectOne = new ObjectName(x.property1, x.property2),
   parentObj = x
})
.ToList();

যাইহোক, মনে রাখবেন যে একটি সংকলনকে অগণিত হিসাবে পার্সিং করা এটিকে স্মৃতিতে টান দেয়, সুতরাং এটি সংস্থান নিবিড় হতে পারে! সাবধানতা এখানে ব্যবহার করা উচিত।


1

এছাড়াও, আপনি যদি একাধিক অবজেক্টের সাথে কনস্ট্রাক্টরটি আরম্ভ করতে ব্যবহার করতে চান তবে লিনক দ্বারা কোনও মান ফেরত না পেলে আপনি ত্রুটি পেতে পারেন।

সুতরাং আপনি এই জাতীয় কিছু করতে চাইতে পারেন:

(from x in table_1
   join y in table_2
   on x.id equals y.id
   select new {
   val1 = x,
   val2 = y
})
.DefaultIfEmpty()
.ToList()
.Select(a => new Val_Constructor(a.val1 != null ? a.val1 : new Val_1_Constructor(),
                            a.val2 != null ? a.val2 : new Val_2_Constructor()))
.ToList();

1

পক্ষের কাছে দেরির জন্য দুঃখিত, কিন্তু আমি খোঁজার পর এই , আমি মনে যেমন পরিষ্কার করে, দ্রুততম এবং মেমরি সংরক্ষণ বাস্তবায়ন আমি খুঁজে পাইনি ভাগ করেছেন দিতে হবে।

আপনার উদাহরণের সাথে খাপ খাইয়ে আপনি লিখতে চান:

public static IQueryable<Payments> ToPayments(this IQueryable<Naleznosci> source)
{
  Expression<Func<Naleznosci, Payments>> createPayments = naleznosci => new Payments
  {
    Imie = source.Dziecko.Imie,
    Nazwisko = source.Dziecko.Nazwisko,
    Nazwa= source.Miesiace.Nazwa,
    Kwota = source.Kwota,
    NazwaRodzajuOplaty = source.RodzajeOplat.NazwaRodzajuOplaty,
    NazwaTypuOplaty = source.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
    DataRozliczenia = source.DataRozliczenia,
    TerminPlatnosci = source.TerminPlatnosci,
  };

  return source.Select(createPayments);
}

এখানে বড় সুবিধা (যেমন ড্যামিয়েন গার্ড লিঙ্কের মন্তব্যে দেখিয়েছেন) হ'ল:

  • প্রতিটি ঘটনার সূচনা প্যাটার্ন ব্যবহার করা থেকে আপনাকে নিরাপদ করে।
  • var foo = createPayments(bar);MyIQueryable.ToPayments () এর মাধ্যমে ব্যবহারের পাশাপাশি ব্যবহার সম্ভব।

1

আমার আজ একই সমস্যা ছিল এবং আমার সমাধানটি ইয়োদা তালিকাভুক্তের অনুরূপ, তবে এটি কেবল সাবলীল সিনট্যাক্সের সাথেই কাজ করে।

আমার কোডটিকে আপনার কোডের সাথে মানিয়ে নেওয়া: আমি নিম্নলিখিত স্ট্যাটিক পদ্ধতিটি অবজেক্ট শ্রেণিতে যুক্ত করেছি

    /// <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();

সম্পূর্ণতার জন্য ক্যোয়ারী সিনট্যাক্স সম্পর্কিত একটি বিভাগ যুক্ত করা যখন আমি বুঝতে পারি আমার প্রাথমিক উত্তরটি ভালভাবে প্রসারিত হয়নি। @ ইয়োদা-র অ্যাওয়ার্ড সম্ভবত ক্যোয়ার্ট সিনট্যাক্সের ক্ষেত্রে আরও ভাল।
অবধি চলেছেন

0

যদিও উত্তর দিতে দেরি হলেও এটি এখনও সমস্যায় পড়ে কাউকে সাহায্য করতে পারে। যেহেতু লিনকিউ থেকে সত্তা প্যারামিটার-কম অবজেক্ট নির্মাণকে সমর্থন করে না। যাইহোক, IEnumerable জন্য প্রক্ষেপণ পদ্ধতি ।

তাই পূর্বে নির্বাচন করার জন্য, শুধু আপনার রূপান্তর IQueryable করার IEnumerable এই কোড ব্যবহার করার মাধ্যমে:

var result = myContext.SomeModelClass.AsEnumerable().Select(m => m.ToString());

এটা ঠিক কাজ করবে। তবে এটি অবশ্যই দেশীয় প্রশ্নের সুবিধাগুলি শিথিল করবে।


0
IQueryable<SqlResult> naleznosci = (from nalTmp in db.Naleznosci
                              where nalTmp.idDziecko == idDziec
                              select new Payments
                              {
                                  Imie = nalTmp.Dziecko.Imie,
                                  Nazwisko = nalTmp.Dziecko.Nazwisko,
                                  Nazwa= nalTmp.Miesiace.Nazwa,
                                  Kwota = nalTmp.Kwota,
                                  NazwaRodzajuOplaty =                          nalTmp.RodzajeOplat.NazwaRodzajuOplaty,
                              NazwaTypuOplaty = nalTmp.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
                              DataRozliczenia = nalTmp.DataRozliczenia,
                              TerminPlatnosci = nalTmp.TerminPlatnosci,
                          });
Repeater1.DataSource  = naleznosci.ToList(); 
Repeater1.DataBind();


public class SqlResult
{
        public string Imie { get; set; }
        public string Nazwisko { get; set; }
        ...
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.