给定是一个基类和一些派生类:
class baseVehicle
{
public int Id { get; set; }
public string vName { get; set; }
public int maxSpeed { get; set; }
}
class truck : baseVehicle
{
public int loadTons { get; set; }
}
class cabrio : baseVehicle
{
public bool softTop { get; set; }
}
class suv : baseVehicle
{
public int NoOfSeats { get; set; }
}
创建所有这些车辆对象并将其插入集合中:
public ObservableCollection<object> vehicles = new ObservableCollection<object>vehicles();
使用vName =“Alfa Romeo Giulietta”或Id = 43找到车辆的最有效方法是什么?
答案 0 :(得分:1)
您应该创建baseVehicle
的集合(baseVehicle
是其他人的基类,您可以添加类型为baseVehicle
的每个对象或从baseVehicle
派生的类型),不是object
的集合(您可以使用object
的集合,但是您应该将元素转换为正确的类型):
public ObservableCollection<baseVehicle> vehicles = new ObservableCollection<baseVehicle>vehicles();
获取一个元素:
您可以使用FirstOrDefault()
- 您可以使用First()
但是您应该确保该元素存在于集合中(在lambda中具有条件):
var vehicle = vehicles.FirstOrDefault(i => i.Id == 43);
if (vehicle != null)
{
//some code
}
您可以使用OR
组合条件:
var vehicle = vehicles.FirstOrDefault(i => i.Id == 43 || i.vName == "some name");
此外,您可以使用AND
:
var vehicle = vehicles.FirstOrDefault(i => i.Id == 43 && i.vName == "some name");
获取几个元素:
使用Where()
;
var someVehicles = vehicles.Where(i => i.Contains("Alfa"));
//or
var someVehicles = vehicles.Where(i => i.Id == 2 || i.vName == "Some name);
答案 1 :(得分:1)
根据评论中的建议,使用ObservableCollection<baseVehicle>
并对其进行过滤:
collection.where(x=>x.Id == 43 || x.vName == "Alfa Romeo Giulietta").FirstOrDefault();
答案 2 :(得分:1)
将您的收藏更改为 var _ID = SpreadsheetApp.getActiveSpreadsheet().getId();
var _sheet = SpreadsheetApp.getActiveSpreadsheet();
var _file = DriveApp.getFolderById(_ID);
var _folder = _file.getParents().next();
var _parentFolder = _file.getParents().next();
var _existingJsons = _parentFolder.getFilesByName(sheet.getName()+".json");
// if .json with the same name already exists in this directory, just overwrite content
if (_existingJsons.hasNext()){
while (_existingJsons.hasNext() ){
var _json = _existingJsons.next();
_json.setContent(output);
Logger.log(_json.getName());
}
}
// if not, create new one, and move it in the same folder sheet is in
else {
var _json = DriveApp.createFile(sheet.getName()+".json", output, MimeType.PLAIN_TEXT);
_json.makeCopy(_parentFolder);
_json.setTrashed(true);
}
或者您可以将其转换为:
ObservableCollection<baseVehicle>