Linq to entities linq到实体orderby奇怪问题
也许是愚蠢的问题,第一次使用linq到实体(好吧,一般来说是linq) 具有id(int)、值(十进制)、名称(字符串)的表 我需要的每一张唱片 但是没有按照我需要的方式组织数据。然而,结果如下: 1100姓名A 2300姓名B 3200姓名C 4100姓名D 下面的话让我很生气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
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();