4
from p in context.ParentCompanies
where p.Name.Contains(e.Filter)
orderby p.Name
select new { Company = p.Name + "," + p.Country  };

p.Countryまたはその他の属性を追加すると、上記のlinqクエリは失敗します。

例外:

Could not translate expression 'Table(ParentCompany).Where(p => p.Name.Contains(Invoke(value(System.Func'1[System.String])))).OrderBy(p => p.Name)' into SQL and could not treat it as a local expression.

4

2 に答える 2

4

LINQ to SQL では、文字列操作を SQL に変換できません。データベースから p.Name と p.Country の両方を選択し、次のように別の手順で連結します。

var parentCompanies = (from p in context.ParentCompanies
                       where p.Name.Contains(e.Filter)
                       orderby p.Name
                       select new { p.Name, p.Country }).ToList();

var concatenated = (from c in parentCompanies
                    select new { Company = c.Name + "," + c.Country });
于 2013-01-11T23:59:37.897 に答える
0

を作成しclassて継承してみてくださいParentCompanies

public ParentCompaniesEntity : ParentCompanies
{
   public string CompanyCountry {get; set;}
}

これが使い方です。

var parentCompanies = (from p in context.ParentCompanies
                       where p.Name.Contains(e.Filter)
                       orderby p.Name
                       select new ParentCompaniesEntity() 
                       { 
                         CompanyCountry = p.Name + ", " + p.Country
                       }).ToList();
于 2013-01-12T00:17:19.390 に答える