通过for循环从列表中获取项目

时间:2016-08-21 11:47:38

标签: c# linq list for-loop unity3d

我正在尝试获得几个合作伙伴的几个项目的名称,但我想念一些东西。

这是脚本

这就是List的代码。

// JSON ---------------------------------------------
[System.Serializable]
public struct MyClassList
{   
    [System.Serializable]
    public struct Partner
    {
        public int partner_id;
        public string partner_name;
        public string _partner_logo_ressource_link;
    }

    public List<Partner> partner;

    [System.Serializable]
    public struct Project
    {
        public int project_id;
        public string project_name;
        public string partner_partner_name;
        public string type_type_name;
    }

    public List<Project> project;

    public static MyClassList CreateFromJSON(string jsonString)
        {
            return JsonUtility.FromJson<MyClassList>(jsonString);
        }
}
// --------------------------------------------------

以下是我试图获得价值的方式。

void InstantieMenuPartner()
{
    for(int i = 0; i < _partnerList.partner.Count; i++)
    {
        GameObject _instance_partner_menu = Instantiate(_prefab_menu_project);
        _instance_partner_menu.name = "Menu_Partner_"+_partnerList.partner[i].partner_name;

        _instance_partner_menu.transform.SetParent(GameObject.Find("Menu_Project").transform, false);

        // Instantie Button Project to Parent Menu Partner -------------------------------------------------------------------------------------------
        for(int p = 0; p < _projectList.project.Count(a => a.partner_partner_name == _partnerList.partner[i].partner_name); p++)
        {
            GameObject _instance_project_button = Instantiate(_prefab_button_project);

            Debug.Log(_projectList.project.Where(a => (a.partner_partner_name == _partnerList.partner[i].partner_name) && (a.project_name == _projectList.project[p].project_name)).Select(a => a.project_name).FirstOrDefault());

            _instance_project_button.transform.SetParent(GameObject.Find("Menu_Partner_"+_partnerList.partner[i].partner_name).transform, false);

            //Text _instance_project_button_text = _instance_project_button.GetComponentInChildren<Text>();
            //_instance_project_button_text.text = _projectList.project[p].project_name;
        }
        // -------------------------------------------------------------------------------------------------------------------------------------------      
        _instance_partner_menu.SetActive(false);
    }
}

Debug.Log部分是我遇到问题的地方。

要解释一下,我在数据库中有一个完整的合作伙伴列表,每个合作伙伴都有几个项目。

通过循环,我正在尝试为合作伙伴提供一个GameObject,并将项目设置为此GameObject的子项。

但我无法使其发挥作用。

1 个答案:

答案 0 :(得分:0)

好的,我明白了。

将Debug.Log部分替换为:

Debug.Log(_projectList.project
    .Where(a => a.partner_partner_name == _partnerList.partner[i].partner_name)
    .Select(c => c.project_name)
    .ElementAtOrDefault(p));

因此,只有一个条件,你得到合作伙伴的列表,然后我在列表中选择好变量,并使用ElementAt得到我的值。