使System.Linq.Dynamic工作的问题。

时间:2012-12-04 17:27:04

标签: linq entity-framework

我已经通过Nuget在我的项目中包含了System.Linq.Dynamic库。以下是我的linq查询,如果我使用在select中返回的类型字段,它可以正常工作。但是使用System.Linq.Dynamic我应该能够为select使用字符串值。我已经按照我发现的示例进行了操作,但是我从select中找到的只是字符串本身。 我错过了什么?

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

2 个答案:

答案 0 :(得分:0)

如果您告诉select语句选择一个字符串,它不会返回这些字符串的值。如果你试着没有引号会怎么样?

我不熟悉C#,是一个VB恶魔,但你可以尝试类似的东西:

选择New With {.Id = n.ID,.Company = n.Company,... etc}

这有意义吗?如果我误解了你的问题,请道歉。

答案 1 :(得分:0)

我的错误。我没有意识到扩展是如何工作的。我希望扩展能够在查询语法中工作,而实际上它只适用于方法语法。

即。 .Select(“new(ID,Name)”);

(这有效)

-vs -

选择(新(ID,姓名)“);

(这不起作用)