我需要修改下面提到的方法来返回字符串列表。它需要contactid作为输入,并应返回问卷列表
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
对象。有人可以告诉我如何去做。
答案 0 :(得分:6)
使用Linq,首先您可以Where
过滤所需的行,然后Select
仅投影问卷调查属性。
试试这个
return context.FatcaQuestionaires
.Where(p => p.ContactID == contactId)
.Select(p => p.Questionaire)
.ToList();
答案 1 :(得分:4)
你几乎拥有它。 Select
调用转换函数,因此它只是列出bool
。您需要Where
子句进行过滤,然后 Select
。
var fatcaQuestionaires = context.FatcaQuestionaires
.Where(p => p.ContactID == contactId)
.Select(p => p.Quentionaire);
return fatcaQuestionaires.ToList();
答案 2 :(得分:2)
你所写的内容看起来会返回一个布尔列表而不是编译。您需要的是where
子句和select
子句的组合。
return context.FatcaQuestionaires
.Where(p => p.ContactID == contactId)
.Select(p => p.Questionaire).ToList();
Where()
限制了FactaQuesntionaires,Select()
是您选择要返回的属性的地方。您也可以这样写:
return (from p in context.FatcaQuestionaires
where p.ContactID == contactId
select p.Questionaire).ToList();
答案 3 :(得分:1)
正如我在评论中提到的那样,将Select
更改为Where
。 Select
将根据您的lambda表达式为每个条目的评估基础返回一个bool值。
所以你最终得到List<bool>
var fatcaQuestionaires = context.FatcaQuestionaires
.Where(p => p.ContactID == contactId)
.Select(q=>q.Questionaire).ToList();
return fatcaQuestionaires;
答案 4 :(得分:0)
计划出你想要的属性。选择(x =&gt; x.MyProp);
return fatcaQuestionaires.Select(x => x.Questionaire).ToList();