如何使用LINQ使用来自另一个List的数据来构建List

时间:2016-12-16 15:09:20

标签: c# linq

我有一些名单,其中包含一个或多个Guid。

var getMyfirstListGuids = (from dlist in db.MyTable
    where dlist.id == theid
    select dlist).ToList();

List<MyfirstList> myfirstList = new List<MyfirstList>();

foreach (var item in myLandingPageList)
{
    Guid theguid = new Guid(item.guid);
    MyfirstList addnewRow = new MyfirstList();
    addnewRow.LpGuid = new Guid(theguid);
    myfirstList.Add(addnewRow);
} 

现在我有一个包含1个或更多guid的列表。 我的下一步是使用第一个列表guid从SQL创建数据列表。 在SQL中,每个guid可以是1行或更多行。有一行结果我可以猜测该做什么。但如果有很多结果,我就没有想法。

2 个答案:

答案 0 :(得分:0)

好的,所以你想这样做:

List<SecondListGUID> secondListGUID = new List<SecondListGUID>();
foreach (var item in myfirstList)
{
    for(int i = 0; i<_yourDBEntity.GUIDs.Count(); i++)
    {
        if(item.LpGuid == _yourDBEntity.GUIDs[i].GUID)
        secondListGUID.add(
            new SecondListGUID() {
                // add the corresponding GUID's here 
        });
    }
}

基本上你必须通过你的第一个List做一个foreach,然后通过你的数据库表(在这种情况下实体,如果你正在使用实体框架)进行for循环(或foreach - 无论你喜欢哪个)并简单比较您的数据库表格中的GUID如果与您匹配,则会将该项目添加到您的第三个列表中。

P.S。我已经使用了您提供的信息,您可以将第二个列表类型更改为您需要的类型,并将实体框架数据模型名称更改为您实际使用的名称:)

答案 1 :(得分:0)

您可以尝试

List<Guid>getMyfirstListGuids =  new List<Guid>();

getMyfirstListGuids.addRange(from dlist in db.MyTable
    where dlist.id == theid
    select dlist).ToList());

List<MySecList> mySecList = new List<MySecList>();

mySecList.AddRange(_db.myLandingPageList.Where(p => p.Guid.Any(x => getMyfirstListGuids.Contains(x));