返回字符串列表

时间:2015-06-19 17:20:36

标签: c# linq

我需要修改下面提到的方法来返回字符串列表。它需要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对象。有人可以告诉我如何去做。

5 个答案:

答案 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更改为WhereSelect将根据您的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();