【发布时间】:2020-05-07 22:37:03
【问题描述】:
假设我们有一个领域结果
RealmDb.All<Entry>();
然后我想使用尚不支持的技术对这些结果进行一些搜索,例如函数返回上的 StartsWith 或未映射到领域等的属性,所以我得到一个子集
IEnumerable<Entry> subset = bgHaystack;
var results = subset.Where(entry => entry.Content.ToLower().StartsWith(needle));
为了以某种方式将这些作为 RealmResults 的一部分,我像这样提取条目 id:
List<int> Ids = new List<int>();
foreach (Entry entry in entries)
{
Ids.Add(entry.Id);
}
return Ids;
最后我想返回 RealmResults 的子集(不是 IEnumerable),其中只有那些包含这些 id 的条目,我该怎么做? IDE 说不支持 Contains 方法。
我可以为此使用某种谓词或比较器吗?
Entry 是我的模型类
using System.ComponentModel.DataAnnotations.Schema;
using Realms;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System;
namespace Data.Models
{
[Table("entry")]
public class Entry : RealmObject
{
public class EntryType
{
public const byte Word = 1;
public const byte Phrase = 2;
public const byte Text = 3;
};
[Key]
[PrimaryKey]
[Column("entry_id")]
public int Id { get; set; }
[Column("user_id")]
public int UserId { get; set; }
[Column("source_id")]
public int SourceId { get; set; }
[Indexed]
[Column("type")]
public byte Type { get; set; }
[Column("rate")]
public int Rate { get; set; }
[Column("created_at")]
public string CreatedAt { get; set; }
[Column("updated_at")]
public string UpdatedAt { get; set; }
[NotMapped]
public Phrase Phrase { get; set; }
[NotMapped]
public Word Word { get; set; }
[NotMapped]
public Text Text { get; set; }
[NotMapped]
public IList<Translation> Translations { get; }
[NotMapped]
public string Content
{
get {
switch (Type)
{
case EntryType.Phrase:
return Phrase?.Content;
case EntryType.Word:
return Word?.Content;
case EntryType.Text:
return Text?.Content;
}
return "";
}
}
}
}
【问题讨论】:
-
我不知道你想要什么,你能解释一下吗?我在代码中没有看到
.Contains? -
“我想返回 RealmResults 的子集(不是 IEnumerable)”。你希望它们是什么类型的?
-
什么是
entries? -
@RufusL 条目是我的模型,我只是将它添加到类中
-
我需要它们作为领域对象,但经过过滤,所以问题是如何过滤领域对象而不将它们转换为其他数据类型,或者如果转换,如何转换回来