0

我有这个查询:

var sole = SoleService.All().Where(c => c.Status != 250)
               .Select(x => new { 
                    ID = x.ID, Code = new {CodeName = x.Code + x.Country}, 
                    Name = x.Name 
               })
               .Distinct()
               .OrderBy(s => s.Code);

像这样它给了我一个错误。我想要的是组合CodeCountry喜欢 concat 字符串,以便我可以将新变量用于我的数据源。就像是 -001France

附言

我正在使用并且现在正在工作的是:

var sole = SoleService.All().Where(c => c.Status != 250)
               .Select(x => new { 
                   ID = x.ID, Code = x.Code, Name = x.Name, Country = x.Country })
               .Distinct()
               .OrderBy(s => s.Code);

所以我需要修改这个查询,以便我可以将Code +Country其用作一个变量。以上只是我认为可行的尝试。

4

3 回答 3

5

好像:

 var sole = SoleService.All().Where(c => c.Status != 250)
                .AsEnumerable()
                .Select(x => new { 
                                ID = x.ID, 
                                Code = x.Code + x.Country, 
                                Name = x.Name
                                })
                .Distinct()
                .OrderBy(s => s.Code);

您根本不需要内部匿名类型。如果您正在使用 EF,+则不支持正弦字符串,请AsEnumerable在选择之前调用。

于 2013-03-27T10:42:49.290 回答
2

您无法排序,s.Code因为它是匿名类型的实例。我会去

var sole = SoleService.All().Where(c => c.Status != 250)
        .Select(x => new { ID = x.ID, Code = new {CodeName = x.Code + x.Country}, Name = x.Name })
        .Distinct()
        .OrderBy(s => s.Code.CodeName);
于 2013-03-27T10:43:35.333 回答
0

尝试添加 .toString() 因为问题应该是 + 运算符相信您尝试添加数字属性...

像那样 :

 var sole = SoleService.All().Where(c => c.Status != 250)
        .Select(x => new { ID = x.ID, Code = new {CodeName = x.Code.ToString() + x.Country.ToString()}, Name = x.Name })
        .Distinct()
        .OrderBy(s => s.Code);
于 2013-03-27T10:44:18.537 回答