C# 用linq分组;但有条件
我不知道如何将这些课程的列表分组C# 用linq分组;但有条件,c#,.net,linq,c#-4.0,C#,.net,Linq,C# 4.0,我不知道如何将这些课程的列表分组 public class Order { public int OrderId { get; set; } public long OrderClassId { get; set; } public int OrderTypeId { get; set; } public int OrderSubTypeId { get; set; } public string OrderString { get; set; }
public class Order
{
public int OrderId { get; set; }
public long OrderClassId { get; set; }
public int OrderTypeId { get; set; }
public int OrderSubTypeId { get; set; }
public string OrderString { get; set; }
//.. other Order stuff not relevant to question
}
我理解的基本分组。看起来,假设订单是一个列表:
但是,具有相同OrderClassId且OrderTypeId为123且具有相同OrderSubjectID的订单需要具有不同的OrderString值
这有点让人困惑,下面是一个例子:
var order1 = new Order
{
OrderId = 1,
OrderClassId = 8754,
OrderTypeId = 123,
OrderSubTypeId = 7156
};
var order2 = new Order
{
OrderId = 2,
OrderClassId = 8754,
OrderTypeId = 123,
OrderSubTypeId = 7156
};
var order3 = new Order
{
OrderId = 3,
OrderClassId = 8754,
OrderTypeId = 951,
OrderSubTypeId = 35144
};
通过我的分组,所有这些都将获得相同的OrderString。但我需要order2来获取不同的OrderString
使用linq可能吗?或者我只是需要迭代所有行并手动分离符合条件的行。使用匿名类型,例如:
var orderGroups = orders.GroupBy(x => new {Property1, Property2});
使用匿名类型,例如:
var orderGroups = orders.GroupBy(x => new {Property1, Property2});
正如基里尔所说,只要使用
var orderGroups=orders.GroupByx=>new{x.OrderClassId,x.ordersubscriptid} 正如基里尔所说,只要使用
var orderGroups=orders.GroupByx=>new{x.OrderClassId,x.ordersubscriptid} 您可以在生成密钥时设置条件
var groups = orders.GroupBy(x => new
{
x.OrderClassId,
TypeChoice = (x.OrderTypeId == 123) // ? true : false
}
您可以在生成密钥时执行条件
var groups = orders.GroupBy(x => new
{
x.OrderClassId,
TypeChoice = (x.OrderTypeId == 123) // ? true : false
}
我想这就是你可以使用的OrderId是唯一的,对吗
orders.GroupBy(o =>
new {
o.OrderClassId,
OrderIdSel = o.OrderTypeId == 123 ? o.OrderId : -1
} )
我想这就是你可以使用的OrderId是唯一的,对吗
orders.GroupBy(o =>
new {
o.OrderClassId,
OrderIdSel = o.OrderTypeId == 123 ? o.OrderId : -1
} )
但是我需要确保当OrderTypeId==123时,我只为OrderTypeId和orderSubscriptId执行逻辑,但是我需要确保当OrderTypeId==123时,我只为OrderTypeId和orderSubscriptId执行逻辑,但是我需要确保当OrderTypeId==123时,我只为OrderTypeId和orderSubscriptId执行逻辑,但是我需要确保我只在OrderTypeId==123时对OrderTypeId和OrderSubjectId执行逻辑这比其他的更接近。但它不区分具有相同和不同ordersubiteid值的行。请记住,我不需要将订单与OrderTypeId=123且OrderSubjectID为的其他订单分组。您的示例将分隔OrderTypeId=123的所有项目。正如您所说的,很难获取。您希望分隔“具有相同OrderClassId且OrderTypeId为123且具有相同OrderSubjectID的订单”。这听起来像:分开他们,句号。但是你所说的“并拥有ordersubiteid”是什么意思呢?这比其他的更接近。但它不区分具有相同和不同ordersubiteid值的行。请记住,我不需要将订单与OrderTypeId=123且OrderSubjectID为的其他订单分组。您的示例将分隔OrderTypeId=123的所有项目。正如您所说的,很难获取。您希望分隔“具有相同OrderClassId且OrderTypeId为123且具有相同OrderSubjectID的订单”。这听起来像:分开他们,句号。但是你所说的“并拥有ordersubiteid”是什么意思呢?