gpt4 book ai didi

c# - LINQ:如何缩短我的代码?

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:39 25 4
gpt4 key购买 nike

我已经完成了一些 LINQ,它工作得很好,但我不喜欢这种类型的编码,我想缩短它,但不太确定如何去做。

有谁知道如何缩短这部分代码?我以前听说过谓词,但不太确定如何实现它们?

 List<Voucher> list = new List<Voucher>();    

if (String.IsNullOrEmpty(Search.SearchText) && Search.Status == 0)
{
list = (from voucherslist in db.Vouchers
//where voucherslist.Status != (int)VoucherStatus.Removed
select voucherslist)
.Take(100)
.ToList();
}

if (!String.IsNullOrEmpty(Search.SearchText) && Search.Status ==0)
{
list = (from voucherslist in db.Vouchers
where voucherslist.Title.Contains(Search.SearchText)
select voucherslist).Take(100).ToList();
}

if (String.IsNullOrEmpty(Search.SearchText) && Search.Status > 0)
{
list = (from voucherslist in db.Vouchers
where voucherslist.Status == Search.Status
select voucherslist).Take(100).ToList();
}

if (!String.IsNullOrEmpty(Search.SearchText) && Search.Status > 0)
{
list = (from voucherslist in db.Vouchers
where voucherslist.Status == Search.Status
&& voucherslist.Title.Contains(Search.SearchText)
select voucherslist).Take(100).ToList();
}

// Convert
ret = VouchersConverter.Convert(list);

// Get Business Details
foreach (ENT_Voucher item in ret)
item.BusinessDetails = this._businessesBLL.GetBusinessDataByID(item.BusinessID);

// Refine and sort
ret = ret.Where(x=>x.BusinessDetails.Accept == true)
.OrderByDescending(x => x.Status.Equals(1))
.ThenByDescending(x => x.StartDate).ToList();

最佳答案

要删除重复项,请先设置您的列表。

list = (from voucherslist in db.Vouchers
//where voucherslist.Status != (int)VoucherStatus.Removed
select voucherslist);

然后如果需要可以添加标题搜索:

if (!String.IsNullOrEmpty(Search.SearchText))
{
list = list.Where(x => x.Title.Contains(Search.SearchText));
}

以及状态搜索:

if (Search.Status > 0)
{
list = list.Where(x => x.Status == Search.Status);
}

最后,把你的 100 压平成一个列表。

list = list.Take(100).ToList();

要记住的是,在 .ToList() 调用之前,这不会真正构造和执行 SQL 查询,并且将要执行的 SQL 将包含您的所有过滤连接在一起。

关于c# - LINQ:如何缩短我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11883533/

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