次のエラーが表示されます。照会エンティティのリストを返すと、「式を変換できませんでした...」というカスタムクラスに変換されました。式を変換できませんでした
私はこの方法でリンクを使用するのが非常に新しいです、過去に私はSQLでストアドプロシージャを使用し、メソッドとしてインポートするだけですが、私はこれらを変換しようとしています。リストを返し
私の方法は次のとおりです。
public static List<EnquiryData> GetAllEnquiries()
{
var GridData = from a in Global.AcepakSalesPortal.Enquiries
join Cust in Global.AcepakSalesPortal.Customers
on a.CustomerID equals Cust.CustomerID into CustGroup
from b in CustGroup.DefaultIfEmpty()
join Pros in Global.AcepakSalesPortal.Prospects
on a.ProspectID equals Pros.ProspectID into ProsGroup
from c in ProsGroup.DefaultIfEmpty()
join Users in Global.AcepakSalesPortal.Users
on a.ResponsiblePartyID equals Users.UserID into UserGroup
from d in UserGroup.DefaultIfEmpty()
join Qt in Global.AcepakSalesPortal.Quotes
on a.QuoteID equals Qt.QuoteID into QuoteGroup
from e in QuoteGroup.DefaultIfEmpty()
join Usr in Global.AcepakSalesPortal.Users
on e.CreatedBy equals Usr.UserID into UsrGroup
from f in UsrGroup.DefaultIfEmpty()
join EnqCat in Global.AcepakSalesPortal.EnquiryCategories
on a.EnquiryCategoriesID equals EnqCat.EnquiryCatID into CatGroup
from g in CatGroup.DefaultIfEmpty()
join Clsd in Global.AcepakSalesPortal.Users
on a.ClosedBy equals Clsd.UserID into ClsdGroup
from h in ClsdGroup.DefaultIfEmpty()
orderby a.Created descending
select new EnquiryData
{
EnquiryID = a.EnquiryID,
ResponsiblePartyID = a.ResponsiblePartyID,
EnquiryNo = "ENQ" + a.EnquiryID.ToString().PadLeft(7, '0'),
EType = a.CustomerID.HasValue ? "C" : "P",
EnqCat = g.Code + " - " + g.Category,
ContactPerson = a.ProspectID.HasValue ? c.ContactPerson : "NOT INTEGRATED YET",
ContactNumber = a.ProspectID.HasValue ? c.ContactNum : "NOT INTEGRATED YET",
ContactEmail = a.ProspectID.HasValue ? c.ContactEmail : "NOT INTEGRATED YET",
Company = a.CustomerID.HasValue ? b.Name : c.CompanyName,
Description = a.Description,
AssignedTo = d.Name,
AddressBy = a.AddressBy,
EnquiryDate = a.Created,
EStatus = a.Closed.HasValue ? "Closed" : a.QuoteID.HasValue ? "Quoted" : "Open",
QuotedOn = a.QuoteID.HasValue ? e.Created.ToShortDateString() : "N/A",
QuotedBy = a.QuoteID.HasValue ? f.Name : "N/A",
QuoteNum = a.QuoteID.HasValue ? e.QuoteID.ToString().PadLeft(7, '0') : "N/A",
ClosedOn = a.Closed.HasValue ? a.Closed.Value.ToShortDateString() : "N/A",
ClosedBy = a.Closed.HasValue ? h.Name : "N/A",
Reason = a.Closed.HasValue ? a.ClosedReason : "N/A"
};
return GridData.ToList();
}
とカスタムクラスがある:
public class EnquiryData
{
public int EnquiryID { get; set; }
public int ResponsiblePartyID { get; set; }
public string EnquiryNo { get; set; }
public string EType { get; set; }
public string EnqCat { get; set; }
public string ContactPerson { get; set; }
public string ContactNumber { get; set; }
public string ContactEmail { get; set; }
public string Company { get; set; }
public string Description { get; set; }
public string AssignedTo { get; set; }
public DateTime AddressBy { get; set; }
public DateTime EnquiryDate { get; set; }
public string EStatus { get; set; }
public string QuotedOn { get; set; }
public string QuotedBy { get; set; }
public string QuoteNum { get; set; }
public string ClosedOn { get; set; }
public string ClosedBy { get; set; }
public string Reason { get; set; }
}
私の質問は2倍 1であるで一緒にテーブルを結合するためのより良い方法はありますLinqは私が上でやっているよりも? 2.エラーを引き起こす原因は何か、私はそれを理解していませんが、これにアプローチする方法もわかりません。
編集:これは、間違いなく、上記の質問の重複ではありません。 2つの間の唯一の類似点は、短い文字列の使用ですが、私が受け取るエラーメッセージは他の質問と全く異なります。
あなたは問題が何であるかを伝えることができますか? – Sampath
select aを使用すると、例外なくレコードを正常に取得できます。だから私はそれが幸せではないことを推測しています。 – ThatChris
context.Database.Log =(sw)=> Debug.WriteLine(sw);クエリの宣言の前にこの行を含めることができます。翻訳されたクエリと実行のためにVSの出力ウィンドウにチェックインしてください。 contextがあなたのDbContextの名前である場合 – Raghu