我目前有这种通用方法:
public virtual T Get(Expression<Func<T, bool>> predicate)
{
return this.Query.Where(predicate).FirstOrDefault();
}
以下是我如何调用该方法的示例:
ST = testTable.Get( u => u.PartitionKey == pKey & u.RowKey == rKey );
我真的不太了解泛型,我需要做的是有一个方法将partitionKey和rowKey作为参数并执行Get。像这样:
ST = testTable.Get(pkey,rkey);
那里有谁知道我怎么能这样做?
答案 0 :(得分:4)
你需要创建一个带有这些参数的函数,并使用一个使用参数的lambda表达式调用第一个函数。
public T Get(pkey,rkey)
{
return Get(u => u.PartitionKey == pKey & u.RowKey == rKey);
}
如果T
不限于继承具有这些属性的类型,则需要创建一个扩展方法,该方法使用具有这些属性的类型参数扩展您的类。
答案 1 :(得分:2)
那里有谁知道我怎么能这样做?
是的,但我不会将方法命名为Get
。我会这样做:
public T GetByPartitionKeyAndByRowKey<T>(int partitionKey, int rowKey) {
return Get(u => u.PartitionKey == partitionKey && rowKey == rowKey);
}
我假设您的域类中的两个属性PartitionKey
和RowKey
为int
。你可以相应地改变。
我想知道你为什么要使用泛型。它看起来像一个实例方法,它看起来像是在某个表中调用,对于某些具有IEnumerable<T>
和T
的{{1}},它可能会实现PartitionKey
。如果你一直在做,那么泛型是什么意思?
此外,为什么这种方法RowKey
?
答案 2 :(得分:0)
这样的事情?
public virtual T Get(string pkey, string rkey)
{
return this.Query.Where(u=>u.PartitionKey == pkey && u.RowKey==rkey).FirstOrDefault();
}