You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中编写函数,根据指定index属性值从对象列表中返回对应的standysp值

如何根据index获取PozycjaMagazynowa对象的standysp属性值?

嘿,我来帮你搞定这个问题!你已经把数据库里的数据成功加载到lista1集合里了,接下来要实现的功能其实很直观——根据给定的index值找到对应的对象,再取出它的standysp属性。这里有两种实用的实现方式,你可以根据自己的熟悉程度选择:

方法一:使用LINQ(简洁高效)

这种方式代码量少、可读性高,是C#里处理集合的常用方式。不过首先你需要在文件顶部添加LINQ的命名空间引用:

using System.Linq;

然后你可以在Program类里添加一个静态方法,用来处理查找逻辑:

static double GetStandyspByIndex(List<PozycjaMagazynowa> lista, string targetIndex)
{
    // 查找第一个匹配目标index的对象,没找到就返回null
    var matchedItem = lista.FirstOrDefault(item => item.index == targetIndex);
    
    // 处理找不到的情况:可以返回默认值0,或者抛出异常提示
    if (matchedItem != null)
    {
        return matchedItem.standysp;
    }
    else
    {
        // 这里两种选择,选一种适合你的场景:
        return 0; // 返回默认值
        // 或者抛出异常:throw new KeyNotFoundException($"未找到index为{targetIndex}的库存记录");
    }
}

在你的Main方法里,就可以这样调用这个函数:

// 示例:查找index为"XYZ789"的standysp值
double targetValue = GetStandyspByIndex(lista1, "XYZ789");
Console.WriteLine($"对应的库存值:{targetValue}");

方法二:手动循环遍历(适合理解底层逻辑)

如果还不熟悉LINQ,手动遍历集合的方式更直观,能让你清楚看到查找的过程:

static double GetStandyspByIndex(List<PozycjaMagazynowa> lista, string targetIndex)
{
    foreach (var item in lista)
    {
        // 逐个比对index值,找到就立即返回对应的standysp
        if (item.index == targetIndex)
        {
            return item.standysp;
        }
    }
    // 遍历完整个集合都没找到,返回默认值或抛出异常
    return 0;
    // throw new KeyNotFoundException($"未找到指定index: {targetIndex}");
}

把逻辑整合到你的wyswietl局部函数里

如果你想把查找功能放到已有的wyswietl函数中,可以直接修改它:

void wyswietl()
{
    Console.WriteLine("请输入要查询的index:");
    string inputIndex = Console.ReadLine();
    
    var matchedItem = lista1.FirstOrDefault(item => item.index == inputIndex);
    
    if (matchedItem != null)
    {
        Console.WriteLine($"对应的standysp值为:{matchedItem.standysp}");
    }
    else
    {
        Console.WriteLine($"抱歉,没有找到index为{inputIndex}的记录");
    }
}

之后在Main方法里调用wyswietl();,就能和用户交互查询了。

额外注意点

  • 字符串比较默认是区分大小写的,如果你的业务场景不要求区分大小写,可以把比对逻辑改成:item.index.Equals(targetIndex, StringComparison.OrdinalIgnoreCase)
  • 如果集合中存在多个相同index的对象,FirstOrDefault会返回第一个匹配的。如果你需要处理所有匹配项,可以用lista.Where(item => item.index == targetIndex)来获取所有结果,再逐个处理。

内容的提问来源于stack exchange,提问作者shade999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 21:07:42