使用字符串数组列表C#lambda表达式过滤对象列表

时间:2018-01-09 08:29:10

标签: c# list linq lambda

我曾尝试过一个类似的答案here,这个答案没有用,可能会遗漏我的情况。

背景:

我正在尝试从外部API(约8k记录)中提取交易工具列表,我只需要10个左右。因此,尝试按以下方式过滤它,但过滤结果为0。

型号:

public class Trade
{
    public int ID { get; set; }
    public string Scrip { get; set; }
    public int Quantity { get; set; }            
}

过滤

List<Trade> trades;
using (StreamReader sr = new StreamReader(Server.MapPath("~/Utils/trades.json")))
{
    trades = JsonConvert.DeserializeObject<List<Trade>>(sr.ReadToEnd());
}

List<Instrument> instruments = GetInstruments(Exchange: "NY");// count 8k
var result = instruments.Where(x => trades.Any(n => x.Name.Contains(n.Scrip))); //count 0

此外,尝试从交易列表中获取Scrip名称作为字符串数组并用于过滤,这也不起作用。

请提前通知并表示感谢。

1 个答案:

答案 0 :(得分:0)

谢谢大家的帮助,这是一个愚蠢的错误

将包含更改为等于及其按预期工作。

instruments.Where(x => trades.Any(n => x.Name.Equals(n.Scrip)));