返回字符串列表
本文关键字:列表 字符串 返回 | 更新日期: 2023-09-27 17:57:06
我需要修改下面提到的方法以返回字符串列表。它将以联系人ID作为输入,并应返回问卷列表
public string GetFatcaQuestionnaire(int contactId, string questionnaireType)
{
using (var context = new dbDealingContainer())
{
if (context.Connection.State == ConnectionState.Closed)
context.Connection.Open();
var fatcaQuestionaires = context.FatcaQuestionaires.FirstOrDefault(p => p.ContactID == contactId && p.QuestionnaireType == questionnaireType);
return fatcaQuestionaires != null ? fatcaQuestionaires.Questionaire : null;
}
}
新提出的方法
public List<string> GetFatcaQuestionnaire(int contactId)
{
using (var context = new dbDealingContainer())
{
if (context.Connection.State == ConnectionState.Closed)
context.Connection.Open();
var fatcaQuestionaires = context.FatcaQuestionaires.Select(p => p.ContactID == contactId).ToList();
return fatcaQuestionaires.ToList();
//return fatcaQuestionaires.ToList() != null ? fatcaQuestionaires : null;
}
}
实际上需要返回一个只有fatcaQuestonaires
的列表。 Questionaire
而不是整个fatcaQuestonaires
对象。有人可以告诉我该怎么做吗?
使用 Linq,首先可以执行筛选所需行的Where
,然后Select
仅投影 Questionaire 属性。
试试这个
return context.FatcaQuestionaires
.Where(p => p.ContactID == contactId)
.Select(p => p.Questionaire)
.ToList();
你几乎拥有它。 Select
调用转换函数,所以它只是列出bool
。您需要一个 Where
子句来执行过滤,然后需要一个Select
。
var fatcaQuestionaires = context.FatcaQuestionaires
.Where(p => p.ContactID == contactId)
.Select(p => p.Quentionaire);
return fatcaQuestionaires.ToList();
你写的东西看起来会返回一个布尔值列表,而不是编译。 您需要的是where
子句和select
子句的组合。
return context.FatcaQuestionaires
.Where(p => p.ContactID == contactId)
.Select(p => p.Questionaire).ToList();
Where()
是限制事实获取者的原因,Select()
是您选择要返回的属性的地方。 你也可以这样写:
return (from p in context.FatcaQuestionaires
where p.ContactID == contactId
select p.Questionaire).ToList();
正如我在评论中提到的,将Select
更改为Where
。 Select
只会根据 lambda 表达式为每个条目的评估返回一个布尔值。所以你最终会得到一个List<bool>
var fatcaQuestionaires = context.FatcaQuestionaires
.Where(p => p.ContactID == contactId)
.Select(q=>q.Questionaire).ToList();
return fatcaQuestionaires;
投影出您想要的属性。选择(x => x.MyProp);
return fatcaQuestionaires.Select(x => x.Questionaire).ToList();