gpt4 book ai didi

c# - 修改 Linq 结果

转载 作者:行者123 更新时间:2023-11-30 21:07:15 28 4
gpt4 key购买 nike

非常基本的问题。如何修改 Linq 结果?

为了进一步说明,我从数据库中的订单表中选择了一个订单列表。我需要在 web 表单的 gridview 中显示结果。首先,我需要修改一些结果。例如,当“订单”字段有值时,“报价”字段应更改为空白。很可能我可能需要对结果进行更精细的操作。在过去,可以循环遍历数组并修改它们,但今天的编程似乎不希望循环发生。目前结果似乎是只读的,好像我做错了什么需要修改列表。

protected void fillGridView()
{
using (CqsDataDataContext cqsDC = new CqsDataDataContext())
{
var orderlist = from x in cqsDC.MasterQuoteRecs
where x.CustomerNumber == accountNumber && x.DateCreated > DateTime.Now.AddDays(howfar)
orderby x.DateCreated descending
select new
{
customer = x.customername,
order = x.OrderReserveNumber,
quote = x.Quote,
date = Convert.ToDateTime(x.DateCreated).ToShortDateString(),
project = x.ProjectName,
total = x.Cost,
status = x.QuoteStatus
};


// I would like to loop thru list and make changes to it here

GridView1.DataSource = orderlist;
GridView1.DataBind();

}
}

最佳答案

你最终得到一个 IQueryable<anonymoustype>与您当前的查询。由于它们是匿名类型,因此它们是只读的,无论如何都无法更改。

最好的选择是改用类,尤其是当您打算进行数据库查询中无法完成的更复杂的操作时。您还需要添加 ToList()在查询结束时,您最终得到一个 List<YourClass>然后可以像往常一样遍历它并更改对象。

因此创建一个包含所有属性的类,例如 MasterQuote ,并在您的查询中使用它:

var query = from x in cqsDC.MasterQuoteRecs
where x.CustomerNumber == accountNumber && x.DateCreated > DateTime.Now.AddDays(howfar)
orderby x.DateCreated descending
select new MasterQuote
{
Customer = x.customername,
Order = x.OrderReserveNumber,
Quote = x.Quote,
Date = Convert.ToDateTime(x.DateCreated).ToShortDateString(),
Project = x.ProjectName,
Total = x.Cost,
Status = x.QuoteStatus
};

var orderList = query.ToList();

foreach (var item in orderList)
{
if (item.OrderReserveNumber > 0)
{
item.Quote = "";
}
}

你的 MasterQuote类看起来像:

public class MasterQuote
{
public string Customer { get; set; }
public int Order { get; set; }
// and so on
}

当然,对于您给出的示例,您可能会在查询中以 seth mentioned 的形式完成报价操作。 .

关于c# - 修改 Linq 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10538395/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com