2012-12-04 99 views
0

我已經通過Nuget在我的項目中包含了System.Linq.Dynamic庫。以下是我的linq查詢,如果我使用類型字段在select中返回,它可以正常工作。但是使用System.Linq.Dynamic我應該可以使用select的字符串值。我跟蹤了我發現的例子,但是我從select中得到的所有內容都是字符串本身。 我錯過了什麼?使System.Linq.Dynamic工作的問題。

var predicate = PredicateBuilder.False<Name>(); 
predicate = predicate.And(d => d.ID == "100053"); 
var results = from n in Names 
         .AsExpandable() 
         .Where(n=> n.ID=="100053")        
         join d in InstitutionDemographics on n.ID equals d.ID 
         join m in MemberAdhocIds on n.ID equals m.ID       
         join a in NameAddresses on n.BillingAddressNumber equals a.AddressNumber 
         join mas in MemberAdhocServices on n.ID equals mas.InstitutionID 
select("new(n.ID,n.Company,n.MemberStatus,n.Email,n.MemberType,n.USCongress,n.FAX,n.County,d.NumberYearsAMember,d.Population,d.FederalReserveDistrict,d.FDICCertificateNumber,d.FRSID,d.ICBADistrictCode,d.UD_Minority_Type,d.MSA,d.NumberOfBranches,d.PubliclyTraded,d.SRAMemberships,d.Assets,d.RSU,d.FutureDues,d.InstitutionType,d.AgLoanPercentageTotal,m.CCRP,a.City,a.State,a.Address1,a.ZIP)"); 
       results.Dump();  

回答

0

我的錯誤。我沒有意識到擴展是如何工作的。我期待擴展工作在查詢語法中,但實際上它只能用於方法語法。

即 。選擇(「new(ID,Name)」);

(這工作)

航班嗎

選擇(新(ID,姓名)「);

(這不起作用)

0

如果您要讓select語句選擇一個字符串,它不會返回這些字符串的值。如果你嘗試沒有引號,會發生什麼?

我不精通C#,是一個VB惡魔,但你可以嘗試這樣的:

選擇新建隨着{.ID = n.ID,。公司= n.Company,...等}

這有道理嗎?道歉,如果我誤解了你的問題。

+0

通常情況下,這將是情況但如上所述,我正在使用System.Linq.Dynamic擴展,它允許我使用字符串進行選擇。 –