如何在Linq查询中使用子字符串c#
本文关键字:字符串 Linq 查询 | 更新日期: 2023-09-27 18:02:00
我有这个查询,我想检索地址的第2个字符。所以我尝试了这个查询:
var result = (from c in context.DB_CLIENT
join ad in context.DB_ADRESSE on c.CLI_ADR_FACTURATION equals ad.ADR_ID
select new { c.CLI_NOM,ad.ADR_ADRESSE3.Substring(0,2)});
但是我得到了这个错误:
Compiler Error CS0746
Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.
你能帮我吗?
如果使用方法而不是仅使用属性,则需要为匿名类型中的属性指定一个名称。
var result = from c in context.DB_CLIENT
select new {
c.CLI_NOM, // property name will be used in the anonymous type
ADR_ADRESSE3_Prefix = ad.ADR_ADRESSE3.Substring(0,2)
});
当你从表达式
赋值时,编译器不能推断出属性名MSDN:
如果未在匿名类型中指定成员名,则编译器为匿名类型成员提供与属性相同的名称用于初始化它们。您必须为属性提供一个名称正在用表达式
初始化
我假设ad
是一个局部变量或一个错别字,实际上是指c
。
您必须使用c.ADR_Address3
选择列,并且您正在通过不可用的ad
进行选择。如果在不同的表中,则需要指定该表的名称
var result = (from c in context.DB_CLIENT
select new { c.CLI_NOM,c.ADR_ADRESSE3.Substring(0,2)});
您可以使用let
关键字来定义短地址,并将其与对象初始化器一起使用。
var result = (from c in context.DB_CLIENT
join ad in context.DB_ADRESSE on c.CLI_ADR_FACTURATION equals ad.ADR_ID
let address = ad.ADR_ADRESSE3.Substring(0,2)
select new { CLI_NOM = c.CLI_NOM, Address = address});