C# Linq-获取一个列表并按字符串值列表对其排序

C# Linq-获取一个列表并按字符串值列表对其排序,c#,linq,C#,Linq,我有一个GUID列表作为字符串: 以下是我检索字符串GUID列表的方式: List<string> p0 = ctx.PrProjectRating.Select(k => k).GroupBy(g => new { g.PrPIdG }, (key, group) => new { sumR = group.Sum(k => k.PrValue), pidG = key.PrPIdG }).Select(t => t.pidG).ToList();

我有一个GUID列表作为字符串:

以下是我检索字符串GUID列表的方式:

List<string> p0 = ctx.PrProjectRating.Select(k => k).GroupBy(g => new { g.PrPIdG }, (key, group) => new { sumR = group.Sum(k => k.PrValue), pidG = key.PrPIdG }).Select(t => t.pidG).ToList();
List p0=ctx.PrProjectRating.Select(k=>k).GroupBy(g=>new{g.PrPIdG},(key,group)=>new{sumR=group.Sum(k=>k.PrValue),pidG=key.PrPIdG}).Select(t=>t.pidG.ToList();
现在我有了另一个列表,其中包含一个名为pidG的字段,但是这个列表需要按照上面的guid字符串列表进行排序

我怎样才能做到这一点

我试过:

List<PProject> p = p.OrderBy(c => p0.Contains(c.PIdG)).ToList(); 
List p=p.OrderBy(c=>p0.Contains(c.PIdG)).ToList();

但是列表仍然不是按照第一个列表“p0”中的字符串GUID排序的。

您必须在这里进行连接

List p0=ctx.PrProjectRating
.选择(k=>k)
.GroupBy(g=>new{g.PrPIdG},(键,组)=>
新的{sumR=group.Sum(k=>k.PrValue),pidG=key.PrPIdG})
.Select(t=>t.pidG.ToList();
var result=p0.Join(p,x=>x,c=>c.PIdG,(x,c)=>c)
托利斯先生()

几乎被问到了,我已经尝试了相关问题的答案,但找不到答案问题的答案对我不起作用你可能想要
IndexOf()
而不是
Contains()
?是否所有的
PIdG
值都保证在
p0
中?类似这样的情况
var pp=p.OrderBy(c=>p0.Contains(c.PIdG)?p0.IndexOf(c.PIdG):int.MaxValue.ToList()