我正在编写的API总是需要IQueryable作为返回类型,即使它是单个对象。这是强加的,我无法改变这一点。我如何从对象创建IQueryable。
我现在的代码对我来说是错的。
<?php
$binaryValue = 101010;
echo strtr($binaryValue,[1,0]);
?>
答案 0 :(得分:1)
编辑:像kienct89一样,我创建了一个通用的扩展方法,以便于使用:
public static class ObjectExtensionMethods
{
public static IQueryable<T> ToQueryable<T>(this T instance)
{
return new [] {instance}.AsQueryable();
}
}
该方法可以简单地在您创建的对象上调用它:
object anObject = new object();
anObject.ToQueryable();
@ kienct89:哇,这几乎就是我所做的,甚至是名字 匹配,我只是拿阵,因为它似乎更便宜,你做到了 在一行:
public static class ObjectExtensionMethods { public static IQueryable<T> ToQueryable<T>(this T instance) { TEntityType[] arrayOfObject = {instance}; return arrayOfObject.AsQueryable(); } }
我们的答案都改为:
public static class ObjectExtensionMethods { public static IQueryable<T> ToQueryable<T>(this T instance) { return new [] {instance}.AsQueryable(); } }
答案 1 :(得分:0)
我不知道你为什么需要返回IQueryable
,但我认为创建一个扩展类来将对象转换为IQueryable
会更好。这将有助于实现3件事
假设您有3个模型类
public class Entity
{
public int Id {get; set;}
}
public class Customer : Entity
{
public string Name {get; set;}
}
public class Cart : Entity
{
}
我们可以像这样编写扩展类
public static class QueryableExtension
{
public static IQueryable<T> ToQueryable<T>(this T obj) where T : Entity
{
return new List<T> { obj }.AsQueryable();
}
}
如何使用
var customer = new Customer { Id = 1, Name = "test" };
var cart = new Cart { Id = 1 };
IQueryable<Customer> customers = customer.ToQueryable();
IQueryable<Cart> carts = cart.ToQueryable();