我很快就要开始使用Xamarin,并将大量代码从Android Studio的Java转换为C#。
在Java中,我使用自定义类,给定参数条件等,将它们转换为SQL语句,然后将结果加载到项目模型中的对象中。
我不确定是否使用LINQ更好地过滤这些数据。
例如,目前会发生类似以下情况的事情:
List<Customer> customers = (new CustomerDAO()).get_all()
或者如果我有一个条件
List<Customer> customers = (new CustomerDAO()).get(new Condition(CustomerDAO.Code, equals, "code1")
现在假设我已经将类转移到C#中,并且我希望做类似于第二种情况的事情。
那么我可能会写出以下代码:
var customers = from customer
in (new CustomerDAO()).get_all()
where customer.code.equals("code1")
select customer
我知道只有在尝试访问客户时才会执行查询,但是如果我对客户进行多次访问(假设我稍后使用4个foreach循环),get_all方法会被调用4次吗?还是结果会在第一次执行时存储起来?
另外,仅保留get_all()方法并使用linq过滤结果是否更有效(时间方面,因为内存方面可能不是)?还是使用我现有的设置,实际上执行了xx?
Select * from Customers where code = 'code1'
将结果加载到对象中?
非常感谢您提供的任何帮助。
编辑:是的,我知道有sqlite.net可以做我dao所做的事情,但可能更好,而且在某些时候我可能会转换所有对象以使用它,我只需要了解这个问题。