首页 > 解决方案 > C# LINQ 获取通用列表 T 的 id

问题描述

我有一个 this 函数,我想将其转换为通用函数。如何获取泛型类的 Id(或其他属性)?

public T GetById(Guid id)
{
    string jsonFile = @"D:\StorageFile.txt";
    var json = File.ReadAllText(jsonFile);
    var items = JsonConvert.DeserializeObject<List<T>>(json);

    return items.FirstOrDefault(x => x.Id == id); // error is here in Id
}

标签: c#linq

解决方案


你必须有一个BaseClassInterface然后:

BaseClass

public class BaseClass
{
   public Guid Id { get; set; }
}

还有你的通用方法:

public static T GetById<T>(Guid id) where T : BaseClass
{
   string jsonFile = @"D:\StorageFile.txt";
   var json = File.ReadAllText(jsonFile);
   var items = JsonConvert.DeserializeObject<List<T>>(json);
   return items.FirstOrDefault(x => x.Id == id); 
}

推荐阅读