C# 有条件订货
尝试按以下顺序获得此项,但不起作用,它不会返回正确的订单,在未付款之前选择取消,请让我知道C# 有条件订货,c#,linq,lambda,C#,Linq,Lambda,尝试按以下顺序获得此项,但不起作用,它不会返回正确的订单,在未付款之前选择取消,请让我知道 dt = dt.AsEnumerable() .OrderBy(x => x["TicketStatus"].ToString()) .ThenBy(x => x["TicketStatus"].ToString() == "Attended") .ThenBy(x => x["TicketStatus
dt = dt.AsEnumerable()
.OrderBy(x => x["TicketStatus"].ToString())
.ThenBy(x => x["TicketStatus"].ToString() == "Attended")
.ThenBy(x => x["TicketStatus"].ToString() == "Issued")
.ThenBy(x => x["TicketStatus"].ToString() == "Unpaid")
.ThenBy(x => x["TicketStatus"].ToString() == "Cancelled")
.GroupBy(x => new {EventID = x["EventID"].ToString(), ContactID = x["ContactID"].ToString()})
.Select(x => x.FirstOrDefault()).CopyToDataTable();
试试这样的
string[] status= { "Attended", "Issued", "Unpaid", "Cancelled" };
var sortstatus = from s in status
orderby s
select s;
只要发现这是有效的
List<string> sortOrder = new List<string> { "Attended", "Issued", "Unpaid", "Cancelled" };
dt = dt.AsEnumerable()
.OrderBy(x => sortOrder.IndexOf(x["TicketStatus"].ToString()))
.GroupBy(x => new {EventID = x["EventID"].ToString(), ContactID = x["ContactID"].ToString()})
.Select(x => x.FirstOrDefault()).CopyToDataTable();
List sortOrder=新列表{“已出席”、“已发布”、“未支付”、“已取消”};
dt=dt.AsEnumerable()
.OrderBy(x=>sortOrder.IndexOf(x[“TicketStatus”].ToString())
.GroupBy(x=>new{EventID=x[“EventID”].ToString(),ContactID=x[“ContactID”].ToString())
.Select(x=>x.FirstOrDefault()).CopyToDataTable();
您希望发生什么?猜测一下,您需要编写一个自定义的IComparer
,并将其作为第二个参数传递给.OrderBy()
您认为“doesnt”不起作用是什么意思?发生了什么?您期望什么?==将比较对象引用,而对象引用永远不会相等。尝试改用.Equals(),例如x[“TicketStatus”].ToString().Equals(“有人参与”)@N0ug4t但字符串被插入…@N0ug4t不起作用,我找到了解决方案,谢谢大家