C# Unity dropdown, on change调用函数,函数查询列表return匹配列表项
C# Unity dropdown, on change calling a function, function query list return matching list items
那些简单的问题之一,我的脑袋就被堵住了。我习惯于在 php 和 mysql 中编码,但我只是想不出 c# 中的简单语法。
我有一个包含企业列表的列表,因为我的项目 class 结构如下。我有一个统一的下拉菜单和 onchange 我使用这个有所选项目的类别 ID:
private void myDropdownValueChangedHandler(Dropdown target) {
int selectedIndex = myDropdown.value;
//LOAD THE ID FROM THE CATS LIST
string theName = myDropdown.options[selectedIndex].text;
var result = loadJSONCats.instance.fetchItemIDByName(theName);
}
public Item fetchItemByID(int id){
for (int i = 0; i < myList.Count; i++) {
if(myList[i].ID == id){
return myList[i];
}
}
return null;
}
我现在需要在我的列表中查找匹配的列表。
在 mysql 我会 SELECT * 从 mylist where term_id IN(id);
我需要根据结果创建一个新列表,这样我就可以遍历找到的项目并实例化一个预制件,该预制件将位于垂直列表元素中,每个垂直行中都有正确的数据。
我的项目class
public class Item {
public int ID {get; set;}
public string post_modified {get; set;}
public string post_title {get; set;}
public string post_type {get; set;}
public string guid {get; set;}
public string Terms_IDs {get; set;}
public string City {get; set;}
public string Latitude {get; set;}
public string LogoID {get; set;}
public string Longitude {get; set;}
//public Item(int id, string post_mod, string post_title, string post_type, string terms, string meta, string guid){
public Item(int id, string post_mod, string post_title, string post_type, string guid, string terms, string city, string latitude, string logoID, string longitude){
this.ID = id;
this.post_modified = post_mod;
this.post_title = post_title;
this.post_type = post_type;
this.guid = guid;
this.Terms_IDs = terms;
this.City = city;
this.Latitude = latitude;
this.LogoID = logoID;
this.Longitude = longitude;
}
}
术语 ID 是一个字符串,因为我的 json 代码更容易以这种方式翻译。
这是我卡住的功能,
public Item findItemsByIDs(int termID){
}
我需要传入 item.terms 的 ID 并在 :
中找到所有匹配的列表项
public List<Item> myList = new List<Item>();
然后 return 一个包含正确数据的列表,并调用预制实例化以填充垂直网格,其中的行由查询中的结果填充。
我是 LINQ 的新手,对 LINQ 和 lamba 感到困惑。
这只是我通常在 sql 中很容易做的事情之一,但作为 c# 的新手,我在互联网上到处走动,却一无所获。
感谢帮助。
这是构造函数:
void ConstructListingDatabase(){
for (int i = 1; i < itemData.Count; i++) {
myList.Add(new Item((int)itemData[i][0], itemData[i][1].ToString(), itemData[i][2].ToString(), itemData[i][3].ToString(), itemData[i][4].ToString(), itemData[i][5].ToString(), itemData[i][6].ToString(), itemData[i][7].ToString(), itemData[i][8].ToString(), itemData[i][9].ToString()));
}
}
通过使用 Linq,您可以获得包含相同 Id 的项目
public List<Item> findItemsByIDs(int termID){
return myList.Where(i => i.Terms_IDs.Split(',').Contains(termID.ToString())).ToList();
}
这将 return 列表中所有 Items
Terms_IDs
包含 termID
不要忘记添加
using System.Linq;
这是您需要的:
myList.Select(i => i).Where(i => int.Parse(i.Terms_IDs) == termID).ToList();
然后到 return 列表,您需要将方法签名更改为:
public List<Item> findItemsByIDs(int termID){
return myList.Select(i => i).Where(i => int.Parse(i.Terms_IDs) == termID).ToList();
}
那些简单的问题之一,我的脑袋就被堵住了。我习惯于在 php 和 mysql 中编码,但我只是想不出 c# 中的简单语法。
我有一个包含企业列表的列表,因为我的项目 class 结构如下。我有一个统一的下拉菜单和 onchange 我使用这个有所选项目的类别 ID:
private void myDropdownValueChangedHandler(Dropdown target) {
int selectedIndex = myDropdown.value;
//LOAD THE ID FROM THE CATS LIST
string theName = myDropdown.options[selectedIndex].text;
var result = loadJSONCats.instance.fetchItemIDByName(theName);
}
public Item fetchItemByID(int id){
for (int i = 0; i < myList.Count; i++) {
if(myList[i].ID == id){
return myList[i];
}
}
return null;
}
我现在需要在我的列表中查找匹配的列表。
在 mysql 我会 SELECT * 从 mylist where term_id IN(id);
我需要根据结果创建一个新列表,这样我就可以遍历找到的项目并实例化一个预制件,该预制件将位于垂直列表元素中,每个垂直行中都有正确的数据。
我的项目class
public class Item {
public int ID {get; set;}
public string post_modified {get; set;}
public string post_title {get; set;}
public string post_type {get; set;}
public string guid {get; set;}
public string Terms_IDs {get; set;}
public string City {get; set;}
public string Latitude {get; set;}
public string LogoID {get; set;}
public string Longitude {get; set;}
//public Item(int id, string post_mod, string post_title, string post_type, string terms, string meta, string guid){
public Item(int id, string post_mod, string post_title, string post_type, string guid, string terms, string city, string latitude, string logoID, string longitude){
this.ID = id;
this.post_modified = post_mod;
this.post_title = post_title;
this.post_type = post_type;
this.guid = guid;
this.Terms_IDs = terms;
this.City = city;
this.Latitude = latitude;
this.LogoID = logoID;
this.Longitude = longitude;
}
}
术语 ID 是一个字符串,因为我的 json 代码更容易以这种方式翻译。
这是我卡住的功能,
public Item findItemsByIDs(int termID){
}
我需要传入 item.terms 的 ID 并在 :
中找到所有匹配的列表项 public List<Item> myList = new List<Item>();
然后 return 一个包含正确数据的列表,并调用预制实例化以填充垂直网格,其中的行由查询中的结果填充。
我是 LINQ 的新手,对 LINQ 和 lamba 感到困惑。
这只是我通常在 sql 中很容易做的事情之一,但作为 c# 的新手,我在互联网上到处走动,却一无所获。
感谢帮助。
这是构造函数:
void ConstructListingDatabase(){
for (int i = 1; i < itemData.Count; i++) {
myList.Add(new Item((int)itemData[i][0], itemData[i][1].ToString(), itemData[i][2].ToString(), itemData[i][3].ToString(), itemData[i][4].ToString(), itemData[i][5].ToString(), itemData[i][6].ToString(), itemData[i][7].ToString(), itemData[i][8].ToString(), itemData[i][9].ToString()));
}
}
通过使用 Linq,您可以获得包含相同 Id 的项目
public List<Item> findItemsByIDs(int termID){
return myList.Where(i => i.Terms_IDs.Split(',').Contains(termID.ToString())).ToList();
}
这将 return 列表中所有 Items
Terms_IDs
包含 termID
不要忘记添加
using System.Linq;
这是您需要的:
myList.Select(i => i).Where(i => int.Parse(i.Terms_IDs) == termID).ToList();
然后到 return 列表,您需要将方法签名更改为:
public List<Item> findItemsByIDs(int termID){
return myList.Select(i => i).Where(i => int.Parse(i.Terms_IDs) == termID).ToList();
}