获取列表C#linq中的项目的产品

时间:2018-01-28 04:19:01

标签: c# linq aggregate

我有一个列表,其中包含使用integerIds的人共享令牌我正在尝试获取每对朋友ID号的产品。所以朋友id 2和4会导致8等。

{{1}}

我能用Linq完成这项工作吗?或者最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

修改

答案很简单

for chunk in iter_csv:
df=[]
df1=[]
for i in range(0,55):
    a_list=[]
    df.append(a_list)
for index, row in chunk.iterrows():
    i = row['a']
    row1 = pd.DataFrame(row)
    row1 = row1.transpose()
    df[i].append(row1)
j=0
for df1 in df:
    if len(df1)>0:
        dfnew = pd.concat(df1)
        if not os.path.isfile('dfnew' + str(j) + '.csv'):
           dfnew.to_csv('dfnew' + str(j) + '.csv')
        else: # else it exists so append without writing the header
            dfnew.to_csv('dfnew' + str(j) + '.csv',mode = 'a',header=False)
    j=j+1

答案 1 :(得分:1)

很难理解你想用你的榜样实现的目标。

但是,如果您想拥有ID和产品,并获得最高SharedCountNumber

您可以执行以下操作

var someResult = someList.Select(x => new
                            {
                                FriendIdA = x.FriendTo.FriendID,
                                FriendIdB = x.FriendFor.FriendID,
                                SharedCountNumber = x.FriendTo.FriendID * x.FriendFor.FriendID    
                            }) // Projection
                          .OrderByDescending(x => x.SharedCountNumber) // order the list
                          .FirstOrDefault(); // get the first

if (someResult != null)
{
    Debug.WriteLine($"A : {someResult.FriendIdA}, B : {someResult.FriendIdB}, Product : {someResult.SharedCountNumber}");
}