Linq to entities linq到实体orderby奇怪问题

Linq to entities linq到实体orderby奇怪问题,linq-to-entities,sql-order-by,Linq To Entities,Sql Order By,也许是愚蠢的问题,第一次使用linq到实体(好吧,一般来说是linq) 具有id(int)、值(十进制)、名称(字符串)的表 我需要的每一张唱片 但是没有按照我需要的方式组织数据。然而,结果如下: 1100姓名A 2300姓名B 3200姓名C 4100姓名D 下面的话让我很生气 int pageSize=10 int pageIndex=2 var data2 = (from c in db.Customers orderby c.ID se

也许是愚蠢的问题,第一次使用linq到实体(好吧,一般来说是linq)

具有id(int)、值(十进制)、名称(字符串)的表

我需要的每一张唱片

但是没有按照我需要的方式组织数据。然而,结果如下:

1100姓名A

2300姓名B

3200姓名C

4100姓名D

下面的话让我很生气

int pageSize=10
int pageIndex=2
var data2 = (from c in db.Customers
             orderby c.ID
             select new
             {
                  id = c.ID,
                  cell = new List<string> { 
                     SqlFunctions.StringConvert((double)c.ID), 
                     SqlFunctions.StringConvert(c.Value), 
                     c.Name
                     }
             }
       ).Skip(pageSize * pageIndex).Take(pageSize).ToArray();
二,

     name B   300     2
三,

     3        200     name C
四,

等等

我不明白为什么,以及如何在不写冗长代码的情况下解决它,我会带着爱跳过

请帮忙,
Fabrizio

我不知道你的代码为什么不工作,但是试着用
ToString
而不是
SqlFunction
,比如:

int pageSize = 10;
int pageIndex = 2;
var data = (from c in db.Customers
            orderby c.ID
            select new
            {
                c.ID, 
                cell = new List<string>{ c.ID.ToString(), c.Value.ToString(), c.Name }
            }).Skip(pageSize * pageIndex).Take(pageSize).ToArray();
intpagesize=10;
int-pageIndex=2;
var数据=(来自数据库中的c)
orderby c.ID
选择新的
{
c、 身份证,
cell=新列表{c.ID.ToString(),c.Value.ToString(),c.Name}
}).Skip(pageSize*pageIndex).Take(pageSize.ToArray();

var ordered=db.Customers.OrderBy(c=>c.ID);
var page=orderedCustomers.Skip(pageIndex*pageSize)。Take(pageSize);
var projection=page.选择(c=>new
{
c、 身份证,
cell=新列表{c.ID.ToString(),c.Value.ToString(),c.Name}
}).ToArray();
更新:我发现您无法让Linq使用字符串。但您可以在本地执行:)尝试:

var ordered=db.Customers.OrderBy(c=>c.ID);
var page=orderedCustomers.Skip(pageIndex*pageSize)。Take(pageSize);
var local=page.AsEnumerable();
var projection=local.Select(c=>new
{
c、 身份证,
cell=新列表{c.ID.ToString(),c.Value.ToString(),c.Name}
}).ToArray();

最后,我遵循了您的第二个示例,将linq从linq中分离为实体,并使用tostring() 在一个句子中写下所有内容,我无法让我们使用字符串,实体不支持它

我仍然想知道我得到的结果的逻辑是可怕的和不合逻辑的


谢谢你的快速回答。

是的,这很奇怪。我认为LINQtoEntity将与
ToString
一起工作。但解决办法很简单,我会在几分钟内更新我的答案。(另一次,你应该发表评论而不是回答)首先,感谢你的修复(+1)。第二,多么愚蠢的问题。我希望.NET团队能够解决这个问题(可以解决吗?)。使我相当头痛。
     name B   300     2
     3        200     name C
     name D   100     4
int pageSize = 10;
int pageIndex = 2;
var data = (from c in db.Customers
            orderby c.ID
            select new
            {
                c.ID, 
                cell = new List<string>{ c.ID.ToString(), c.Value.ToString(), c.Name }
            }).Skip(pageSize * pageIndex).Take(pageSize).ToArray();
var ordered = db.Customers.OrderBy(c => c.ID);
var page = orderedCustomers.Skip(pageIndex * pageSize).Take(pageSize);

var projection = page.Select(c => new
                 {
                     c.ID,
                     cell = new List<string> { c.ID.ToString(), c.Value.ToString(), c.Name }
                 }).ToArray();
var ordered = db.Customers.OrderBy(c => c.ID);
var page = orderedCustomers.Skip(pageIndex * pageSize).Take(pageSize);

var local = page.AsEnumerable();

var projection = local.Select(c => new
                 {
                     c.ID,
                     cell = new List<string> { c.ID.ToString(), c.Value.ToString(), c.Name }
                 }).ToArray();