转换/强制转换任务<IList<MyType>> 到基本类型


public class Person : People
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class People
{
[Table("PeopleTable")]
public int Index { get; set; }
}

是否可以将Task<IList<<People>>强制转换为Task<IList<Person>>

我为获取数据而调用的通用异步方法需要具有sqlite属性的类,因为类名并不总是与表名匹配。问题是,它也返回相同的类型。我不太清楚如何在保持异步的同时返回另一个类型。

您应该能够简单地执行:

Person p = (Person)peopleObject;

您将丢失People对象在Person对象上添加的所有内容。作为一个任务或在列表中与选角无关,所以我认为这没有问题。

从您的代码片段中,我建议将Firstname和Secondname移到Person类中,然后在名为People的List中使用,而不进行任何继承。当然,这种判断只是一个片段,而不是你的意图或代码库。

创建

public class People
{
[Table("PeopleTable")]
public int Index { get; set; }
}
public class Person : People
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

SqlLite类帮助程序


class SQLiteHelper
{
}
public class GenericDB<T> where T : GenericIntDTO, new()
{
private SQLiteAsyncConnection _sqlconnection;
public GenericDB()
{
//Getting conection and Creating table  
_sqlconnection = LibraryHelper.DBConnection;
_sqlconnection.CreateTableAsync<T>();
}
public async Task<T> GetObjectById(string id)
{
return await _sqlconnection.Table<T>().FirstOrDefaultAsync(t => t.Id.Equals(id));
}
public async Task<T> GetSingleObjectQuery(string query)
{
var tempobject = await _sqlconnection.QueryAsync<T>(query);
return tempobject.FirstOrDefault();
}
public async Task<List<T>> GetAllObjects()
{
var tempobjects = await _sqlconnection.Table<T>().ToListAsync();
return tempobjects.ToList();
}
public async Task<List<T>> GetAllObjectQuery(string query)
{
var tempobjects = await _sqlconnection.QueryAsync<T>(query);
return tempobjects.ToList();
}
public async Task DeleteObject(string id)
{
await _sqlconnection.DeleteAsync<T>(id);
}
public async Task DeleteAllData()
{
await _sqlconnection.DeleteAllAsync<T>();
}
public async Task AddObject(T data)
{
await _sqlconnection.InsertAsync(data);
}
public async Task UpdateObject(T data)
{
await _sqlconnection.UpdateAsync(data);
}
public async Task InsertUpdateObject(T data)
{
//var temp = await _sqlconnection.Table<T>().FirstOrDefaultAsync(t => t.id == data.id);
if (data.Id != 0)
{
data.UpdatedOn = DateTime.UtcNow;
await _sqlconnection.UpdateAsync(data);
}
else
{
data.AddedOn = DateTime.UtcNow;
data.UpdatedOn = DateTime.UtcNow;
await _sqlconnection.InsertAsync(data);
}
}
public async Task AddAllObjects(List<T> objects)
{
await _sqlconnection.InsertAllAsync(objects);
}
public async Task DeleteAll()
{
await _sqlconnection.DeleteAllAsync<T>();
}
}

现在,如果你想在没有GenericDto的情况下搜索,你可以这样称呼它,在你的情况下是People

GenericDB<Person> Persondto= new GenericDB<Person>();
PersonResult= await Person.GetObjectById("Pass id here");

如果您想查找除任何非id列之外的其他列,则可以使用GetObjectByQuery


GenericDB<Person> Persondto= new GenericDB<Person>();
lst = await Persondto.GetAllObjectQuery($"SELECT * FROM {nameof(Person)}");

相关内容

最新更新