如何在c#中创建一个从列表返回值的函数



我有一个充满对象的列表。我需要做一个函数当给定一个类属性的某个值时,它会返回另一个。在我的例子中,当您指定"索引"时,该函数将返回"standysp"(很抱歉,如果我不能很好地解释它)。我需要让这个函数工作,但我甚至不知道什么时候开始。下面是我的代码:

using System;
using FirebirdSql.Data.FirebirdClient;
using System.Collections.Generic;
namespace dokselect
{
class PozycjaMagazynowa
{
public double standysp;
public string nazwagrupy;
public string index;
public string nazwadl;
}
class Program
{
public static void Main()
{
string conn = "SECRET";
FbConnection myConnection = new FbConnection(conn);
FbDataReader myReader = null;
string sql = "select STANMAG.standysp,GRUPAKART.nazwagrupy, KARTOTEKA.indeks, kartoteka.nazwadl FROM stanmag JOIN kartoteka using(ID_KARTOTEKA) JOIN wystgrkart using(ID_KARTOTEKA) JOIN grupakart using(ID_GRUPAKART) ORDER BY nazwagrupy;";
FbCommand myCommand = new FbCommand(sql, myConnection);
myConnection.Open();
myReader = myCommand.ExecuteReader();
List<PozycjaMagazynowa> lista1 = new List<PozycjaMagazynowa>();
double standysp;
string nazwagrupy;
string index;
string nazwadl;
while (myReader.Read())
{
standysp = Convert.ToDouble(myReader[0]);
nazwagrupy = myReader[1].ToString();
index = myReader[2].ToString();
nazwadl = myReader[3].ToString();
lista1.Add(new PozycjaMagazynowa { standysp = standysp, nazwagrupy = nazwagrupy, index = index, nazwadl = nazwadl });

}

myConnection.Close();
Console.WriteLine(lista1.Count);
//LISTA DONE
void wyswietl()
{
//????????
}
}
}
}

我不确定你的做法是否正确。首先,您创建的List不能被其他方法访问。其次,也许列表是不合适的,你可以使用HashSet<T>DictionnaryPozycjaMagazynowa类实现IEqualityComparer

我用了这个方法,它工作了谢谢你的帮助:

double wyswietl()
{
string myIndex="WSIP_MAT_GIM";
var result = lista1.FirstOrDefault(lista1 => lista1.index == myIndex).standysp;
Console.WriteLine(myIndex + " Zostalo zwrocone przez funkcje");
Console.WriteLine(result + " - to stan dyspozycyjny pasujacy do podanego indexu");
return result;
}
wyswietl();