gpt4 book ai didi

c# - 将 (T obj) 与 Linq 查询结合使用

转载 作者:行者123 更新时间:2023-12-03 04:51:58 24 4
gpt4 key购买 nike

我有以下方法

public static async void CheckAndInsert<T>(T obj) 
{
var data = AppDelegate.Self.InstanceLive.LoadAllAsync<T>().Result.ToList();
if (data.Count != 0)
{
var theData = data.FirstOrDefault(t => t.id == obj.id);
if (theData == null)
await StoreData(theData);
else
{
if (theData.__updatedAt != obj.__updatedAt)
await UpdateData(theData);
}
}
}

数据库包含从 Azure 数据库生成的表,因此保证始终有一个 ID。

理论上,这段代码应该可以工作,但是在编译时,我收到一个错误

Type T does not contain a definition for 'id' and no extension method 'id' of type 'T'

有办法让这段代码运行吗?

最佳答案

这里的问题是,使用这个泛型方法声明 T 可以是任何类型,包括那些不提供 Id 成员的类型。显然,在这种情况下您的代码会中断,因此编译器不允许这样做。

要解决此问题,您需要提供 generic type constraints约束 T 以便您可以确定它具有 Id 属性。

public static async void CheckAndInsert<T>(T obj) where T:IIdentity

并让你的模型类实现IIdentity,它可能看起来像

public interface IIdentity
{
int Id{get;}
}

关于c# - 将 <T>(T obj) 与 Linq 查询结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com